2つ(秒)に分割されているタイムスタンプ10の一般的なフォーマット13(ミリ秒)のタイムスタンプタイムスタンプ
タイムスタンプは、ローカルタイムスタンプと世界統一(UTC)タイムスタンプつまり、二つのタイプに分けられ
直接コードでADO、:
まず、タイムスタンプ取得方法
/// <要約> /// 取得したタイムスタンプ /// </要約> /// <PARAM NAME = "timeKind"> (ローカルのみ、UTCに)時間タイプ</ param>の /// の<paramの名前= "形式"> (のみ10,13など)スタンプ形式</ param>の /// <戻り値> </戻り値> プライベート ダブル getTimestamp(int型フォーマット、DateTimeKind timeKind) { のtimeSpanのtimeSpan = 新新のtimeSpan(); スイッチ(timeKind) { ケース DateTimeKind.Utc:のtimeSpan = DateTime.UtcNow - 新しい新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; ケース DateTimeKind.Local:のtimeSpan = DateTime.Now - 新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; デフォルト:スロー 新しい例外を(" 时间类型只能为ローカル、UTC " ); } スイッチ(フォーマット) { ケース 10:戻りtimeSpan.TotalSeconds。 ケース 13はある:リターンtimeSpan.TotalMilliseconds; デフォルト:スロー 新しい新しい例外(" タイムスタンプ形式のみが10,13である" ); } } /// <要約> /// 取得タイムスタンプ10 /// </要約> /// <PARAM NAME = "timeKind"> 時間タイプ(のみローカル、UTCのために、ローカルデフォルト)</ param>の /// <戻り値> </戻り値> 公共 int型 Get10Timestamp(DateTimeKind timeKind = DateTimeKind.Local) { 戻り Convert.ToInt32(getTimestamp(10 ; timeKindを)) } /// <要約> /// 取得したタイムスタンプ13 /// </要約> /// <PARAM NAME = "timeKind"> タイムタイプ(ローカルのみ、UTCのために、ローカルのデフォルト)</ param>の / // <戻り値> </戻り> 公衆 ロング Get13Timestamp(DateTimeKind timeKind = DateTimeKind.Local) { 戻り Convert.ToInt64(getTimestampを(13であり、timeKind)); }
第二に、タイムスタンプの検証方法
/// <まとめ> /// 検証スタンプ(10、13 Jieke) /// </要約> /// <PARAM NAME = "タイムスタンプ"> タイムスタンプ</ PARAM> /// <PARAM名前= "timeDiff"> 許可する時間差(時間10秒、13ミリ秒)</ param>の /// <PARAM NAME = "timeKind"> ローカルのみ、UTCは、ローカルのデフォルトのタイムタイプ( ) </ PARAM> /// <返し> </戻り> 公共 BOOL ValidateTimestamp(ダブルタイムスタンプ、INT timeDiff、DateTimeKind timeKind = DateTimeKind.Local) { のtimeSpanのtimeSpan = 新しい新規のtimeSpan()。 スイッチケース(timeKind) { );DateTimeKind.Utc:のtimeSpan = DateTime.UtcNow - 新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; ケース DateTimeKind.Local:のtimeSpan = DateTime.Now - 新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; デフォルト:スロー 新しい(例外を" 时间类型只能为ローカル、UTC " } 二重 nowTimestamp = 0 ; // 現在のタイムスタンプ INTフォーマットtimestamp.ToString =(" F0 " ).LENGTH; スイッチ(フォーマット) { ケース 10:nowTimestamp = timeSpan.TotalSeconds; BREAK 、 ケース 13は:nowTimestamp = timeSpan.TotalMilliseconds。BREAK ; デフォルト:スロー 新しい新しい例外(「タイムスタンプフォーマットエラー」); } ダブル nowTimeDiff = nowTimestamp -タイムスタンプ; // 現在の差が もし(-timeDiff <= nowTimeDiff && nowTimeDiff <= timeDiff) を返す 真。 それ以外の 返し はfalse ; }
タイムスタンプの日時に変換する第三の、方法
/// <まとめ> /// 日時のためにインストールタイムスタンプ(10ビットJieke 13) /// </要約> /// <PARAM NAME = "タイムスタンプ"> タイムスタンプ</ PARAM> / // <PARAM NAME = "timeKind"> (ローカルのみ、UTCのため、ローカルのデフォルト)、時間タイプ</ param>の /// <PARAM NAME = "toTimeKind"> のみ現地時間の戻り値の型(、UTCを、デフォルトtimeKind)と一致</ PARAM> /// <戻り値> </戻り> 公共日時TimestampToDateTime(ダブルタイムスタンプ、DateTimeKind timeKind = DateTimeKind.Local、DateTimeKind toTimeKind = DateTimeKind.Unspecified) { 日時のstartTime。 toTimeKind = timeKind。 スイッチ(timeKind) { ケース DateTimeKind.Utc:たstartTime = 新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; ケース DateTimeKind.Local:たstartTime = 新規のDateTime(1970、1、1、0、0、0、timeKind)。破ります; デフォルト:スロー 新しい(例外を" 时间类型只能为ローカル、UTC" ); } 日時NEWTIME; int型形式= timestamp.ToString(" F0 」).LENGTH; スイッチ(フォーマット) { ケース 10:NEWTIME = startTime.AddSeconds(タイムスタンプ); 破る; ケース 13:NEWTIME = startTime.AddMilliseconds(タイムスタンプ); 破る; デフォルト:スロー 新しい例外(" 时间戳格式错误" ); } もし newTime.Kind =(!toTimeKind) NEWTIME = toTimeKind == DateTimeKind.Localを?newTime.ToLocalTime():newTime.ToUniversalTime(); 返すNEWTIMEを。 }