CSharp

日付・時間

目次

今日の日付を取得する

  • System.DateTimeクラスを使用する
  • TodayプロパティとToString()を用いる。
    string today = DateTime.Today.ToString("yyyy/mm/dd");

現在時刻を取得する

  • System.DateTimeクラスを使用する
  • NowプロパティとToString()を用いる。
    string now = DateTime.Now.ToString("HH:MM:SS");

うるう年の判定

  • DateTimeクラスのIsLeepYear()メソッドで判定できる。
    for(int i=1; i<2010; i++) {
        if (DateTime.IsLeepYear(i)) {
            Console.WriteLine(i + "年はうるう年です");
        }
    }

書式(DateTime)

  • ToString("")とかで使う書式文字列について。
書式説明
y年の下二桁を0〜99の数値で。
yy年の下二桁を00〜99の数値で。
yyy年の下三桁を000〜999の数値で。
yyyy年の下四桁を0000〜9999の数値で。タイ仏暦では5桁で出力されることもあり
M月を1〜12の数値で。
MM月を01〜12の数値で。
MMM月名の省略形で。
MMMM月名の完全形で。
d月の日にちを1〜31の数値で。
dd月の日にちを01〜31の数値で。
ddd曜日名の省略形で。例)木
dddd曜日名の完全形で。例)木曜日
h時間を1〜12の数値で。
hh時間を01〜12の数値で。
H時間を1〜23の数値で。
HH時間を01〜23の数値で。
m分を0〜59の数値で。
mm分を00〜59の数値で。
s秒を0〜59の数値で。
ss秒を00〜59の数値で。
標準の DateTime 書式指定文字列
http://msdn.microsoft.com/ja-jp/library/az4se3k1(VS.80).aspx
カスタム DateTime 書式指定子
http://msdn.microsoft.com/ja-jp/library/8kb3ddd4(VS.80).aspx

文字列からDateTime型へ

  • 通常の日付文字列ならば、DateTime.Parseメソッドを使用する。
    DateTime startTime = DateTime.Parse("2009/6/5 9:00");
  • 独自の形式になっているような場合は、DateTime.ParseExactを使う。
    // 年4桁+月2桁+日2桁+時2桁+分2桁+秒2桁の文字列をDateTime型へ
    DateTime date = DateTime.ParseExact(
                            strInput, 
                            "yyyyMMddHHmmss", 
                            System.Globalization.DateTimeFormatInfo.InvariantInfo);

分単位で切り上げなど

  • DateTime型で用意されているメソッドでは単位ごとの加算はできるが、代入は出来ない。そのため下記のような分単位の切り上げはエラーとなる。
    DateTime nextTime = DateTime.Now;
    nextTime.AddMinutes(1);
    nextTime.Second = 0;      // ←ここでエラー。プロパティは参照のみ。
    nextTime.Millisecond = 0; // ←同じく
  • 簡単な対策として一度文字列にしてからParseを使って再設定する方法もある。
    DateTime nextTime = DateTime.Parse(DateTime.Now.AddMinutes(1).ToString("yyyy/M/d H:m:00"));
  • Parseは書式解析のため処理としては重くなってしまう。
  • 結論として、DateTime (Int32, Int32, Int32, Int32, Int32, Int32)のコンストラクタで、年月日時分秒をダイレクトで指定する方が処理は軽くて良さそう。
    DateTime now = DateTime.Now;
    DateTime nextTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minutes +1, 0);

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-07 (火) 10:07:14 (5400d)