teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

タイムゾーンの変換処理を変更

2019/07/30 23:32

投稿

draq
draq

スコア2577

answer CHANGED
@@ -15,22 +15,20 @@
15
15
  // NTPサーバへのリクエスト送信
16
16
  var sendData = new Byte[48];
17
17
  sendData[0] = 0xB;
18
- udp.Send( sendData, 48, "time.windows.com", 123 );
18
+ udp.Send(sendData, 48, "time.windows.com", 123);
19
19
 
20
20
  // NTPサーバから日時データ受信
21
- var recieveData = udp.Receive( ref ip );
21
+ var receiveData = udp.Receive(ref ip);
22
22
 
23
23
  // 1900年1月1日からの経過秒数計算
24
24
  var totalSeconds = (long)(
25
- recieveData[40] * Math.Pow( 2, ( 8 * 3 ) ) +
25
+ receiveData[40] * Math.Pow(2, (8 * 3)) +
26
- recieveData[41] * Math.Pow( 2, ( 8 * 2 ) ) +
26
+ receiveData[41] * Math.Pow(2, (8 * 2)) +
27
- recieveData[42] * Math.Pow( 2, ( 8 * 1 ) ) +
27
+ receiveData[42] * Math.Pow(2, (8 * 1)) +
28
- recieveData[43] );
28
+ receiveData[43]);
29
29
 
30
- var now = new DateTime( 1900, 1, 1 ).AddSeconds( totalSeconds );
30
+ var utcTime = new DateTime(1900, 1, 1).AddSeconds(totalSeconds);
31
31
 
32
- // グリニッジ標準時から日本時間への変更
32
+ // 協定世界 (UTC) からローカルタイムゾーンへの変更
33
- now = now.AddHours(9);
33
+ var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
34
-
35
- now.Dump();
36
34
  ```

1

ソースの参照先URLを追記しました。

2019/07/30 23:32

投稿

draq
draq

スコア2577

answer CHANGED
@@ -4,6 +4,7 @@
4
4
  クラサバ構成でRMSDBがあるなら、SQL等で現在時刻を取得するのもよくやりますね。
5
5
 
6
6
  NTPサービスへ現在時刻を問い合わせるには以下のようにすればいいです。
7
+ ※ソースは[こちら](http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleNtpDateTime.html)から必要な部分のみ抜き出して改変しました。
7
8
  NTPサービスは他に変更した方がいいかもしれません。
8
9
 
9
10
  ```C#