C〓〓操作タイムスタンプ

2211 ワード


1.タイムスタンプとは?
まず、JavaScriptとUnixのタイムスタンプの違いを明確にします.
JavaScriptタイムスタンプ:グリニッジ時間1970年01月01日00時00秒(北京時間1970年01月01日08時00秒)から現在までの総ミリ秒数を指します.
Unixタイムスタンプ:グリニッジ時間1970年01月01日00時00秒(北京時間1970年01月01日08時00秒)から現在までの総秒数です.
JavaScriptタイムスタンプは総ミリ秒数、Unixタイムスタンプは総秒数と見られます.
例えば同じです 2016/11/03 12:30、JavaScriptタイムスタンプに変換します. 147814740000;Unixタイムスタンプに変換します. 1478147400
 
2. JavaScriptタイムスタンプ相互変換
2.1 C铉DateTimeをJavaScriptタイムスタンプに変換する
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));  //     
DateTime localNow = DateTime.Now;
long timeStamp = (long)((localNow - startTime).Ticks / 10000); //      
または:
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));  //     
            DateTime localNow = DateTime.Now;
            long timeStamp = (long)((localNow - startTime).TotalMilliseconds); //      
2.2 JavaScriptタイムスタンプをC〓DateTimeに変換する
long jsTimeStamp = 1478169023479;

System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); //     

DateTime dt = startTime.AddMilliseconds(jsTimeStamp);

System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));
 
NET CoreでTimeZoneを使ってクライアント時間をサーバーローカル時間に変更しましたが、コンパイルのヒントが期限切れになりました.
私たちのプロジェクトが国際化したら、タイムゾーンの問題を解決しなければなりません.
NET Coreの前に、クライアント時間を以下のコードでサービスタイムに変換できます.
DateTime serverTime = TimeZone.CurrentTimeZone.ToLocalTime(clientTime);
NET Coreでは、TimeZone類はすでに期限が切れているとマークされていますが、どのように期限が切れていないAPIを使ってタイムゾーンの切り替えをすればいいですか?
DateTime startTime = TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), TimeZoneInfo.Utc,TimeZoneInfo.Local);  //     
以下の通りです
//     
DateTime startTime = TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), TimeZoneInfo.Utc,TimeZoneInfo.Local);  //     
long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; //      
System.Console.WriteLine(timeStamp);
 
詳細:
C xiはどうやって今日の零時の時間を取りますか?
C〓時間帯文字列を日付に変換し、その日の時点で判断する.
 C葃ローカル時間フォーマット、UTC時間フォーマット、GMT時間フォーマット処理