2013年9月28日土曜日

JavaScript - String.Contains メソッドの登録

以前JavaScript - String.Contains メソッドの代わりの記事で C# で用意されている String.Contains と同じ働きをするメソッドを紹介しました。このような自作メソッドを String の prototype に登録することで、JavaScript でも String 変数から Contains メソッドを呼び出すことができるようになります。(ここでの登録名は contains です。)
ちなみに、第二引数の走査開始インデックスは省略可能です。

        window.onload = function () {
            if (!('contains' in String.prototype)) {
                String.prototype.contains = function (targetStr, searchStartIndex) {
                    return -1 !== String.prototype.indexOf.call(this, targetStr, searchStartIndex);
                };
            }
        };
        function StringCheck() {
            var target = "One day in summer, a boy met a girl.";
            var result = target.contains("summer", 0);
        }

<input type="button" value="Contains test" onclick="StringCheck()" />

参考:String.contains

2013年9月12日木曜日

C# - DateTime.DaysInMonth 特定日からその月の全日を取得する

特定日からその月の全日を取得する方法が無いかを探していたら、DateTime に DaysInMonth というメソッドが用意されていました。
これは便利やー!!ということで早速利用してみました。DaysInMonth メソッド自体は月の持つ日数を返すだけなので、日数分ループして日付を用意しています。

protected void Page_Load(object sender, EventArgs e)
{
    // 日を保存するリスト
    List<DateTime> days = new List<DateTime>();

    // 来月の日付を取得
    DateTime nextMonth = DateTime.Today.AddMonths(1);

    // DateTime.DaysInMonth を使って選択日の月の日数を取得
    int daysInNextMonth = DateTime.DaysInMonth(nextMonth.Year, nextMonth.Month);

    // 日数分カレンダーに追加
    for (int i = 0; i < daysInNextMonth; i++)
    {
        DateTime date = new DateTime(nextMonth.Year, nextMonth.Month, i + 1);

        days.Add(date);
    }
}

参考:DateTime.DaysInMonth メソッド