【BUG】12時間制と24時間制で当日零点問題を取得

1394 ワード

【BUG】12時間制と24時間制で当日零点問題を取得
最近は定時サービスを書いている時に、当日の0時という時間を取得していますが、このように取得しています
 
DateTime dt = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")+" 00:00:00");
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));

 
ローカルでは、テスト、QA環境テストは問題ありませんが、パブリックネットワークサーバに接続すると、このタイミングサービスに問題が発生します.ログを書いてみると、なんと当日の0時を取得し、つなぎ合わせて取得した時間は前日の0時で、サーバー時間は12時間制で、ローカル環境は24時間制だった.
さらに深く考えてみると、毎日の00:00から00:59:59までの時間は、24時間制の時間内が当日の日付であることがわかりました.ただし12時間制では、一昨日の日付の12:00:00から12:59:59までです.例えば、24時間制で今日の「2013-09-26 00:00:00」という時間を12時間制サーバーで取得すると「2013-09-25 12:00:00」、DateTime.Now.ToString(「yyyyy-MM-dd」)このメソッドが取得した日付が「2013-09-25」であり、dt取得は「2013-09-25 12:00」である.
  
元々、C#で取得した時間の時間制によって、このように取得することができます
24 : DateTime dt = DateTime.Now;
string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss");
12 : DateTime dt = DateTime.Now;
string dt12 = dt.ToString("yyyy-MM-dd hh:mm:ss");
 H 

サーバの時間制が12時間であろうと24時間であろうと,大文字Hが取得するのは24時間であり,小文字hが取得するのは12時間である.
今日出会ったこの問題は、自警用に記録しておきましょう.