C#のタイムスタンプ関連の操作

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(197011000、timeKind)。破ります;
        ケース DateTimeKind.Local:のtimeSpan = DateTime.Now - 新規のDateTime(197011000、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(197011000、timeKind)。破ります;
        ケース DateTimeKind.Local:のtimeSpan = DateTime.Now - 新規のDateTime(197011000、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(197011000、timeKind)。破ります;
        ケース DateTimeKind.Local:たstartTime = 新規のDateTime(197011000、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を。
}

おすすめ

転載: www.cnblogs.com/sgwy/p/11609098.html