DatetimeHelperクラスを書きます

パブリッククラスライティングクラスDAtaTimeHelper

 

パブリッククラス選任
{
公共のDateTime開始日{取得します。セット; }
公共のDateTime終了日{得ます。セット; }
}
パブリック静的クラスDateTimeExtensions
{
パブリック静的日時FromTodayGetSundayDay(この日時日)
{
スイッチ(day.DayOfWeek)
{
ケースDayOfWeek.Monday:戻りday.AddDays(-1)。
ケースDayOfWeek.Tuesday:戻りday.AddDays(-2)。
ケースDayOfWeek.Wednesday:戻りday.AddDays(-3)。
ケースDayOfWeek.Thursday:戻りday.AddDays(-4)。
ケースDayOfWeek.Friday:戻りday.AddDays(-5)。
ケースDayOfWeek.Saturday:戻りday.AddDays(-6)。
ケースDayOfWeek.Sunday:リターンday.AddDays(-7)。
}
日を返します。
}

パブリック静的リスト<予定> SplitAppointment(予定APPT)
{
のTimeSpan oneDay = TimeSpan.FromDays(1)。
TimeSpanのEODを= oneDay。一日の//最後の可能な時間
一覧<予定>結果=新しいリスト<予定>();
日時currentDay = appt.StartDate。
日時endOfCurrentDay = currentDay.Date + EODを。
一方、(endOfCurrentDay <appt.EndDate)
{
result.Add(新しい予定(){開始日= currentDay、終了日= endOfCurrentDay})。
//はAPPTの他の属性コピー
currentDay = currentDay.Date + oneDayを。// EDIT:この行に変更
endOfCurrentDay + = oneDayを。
}
IF(currentDay <appt.EndDate)
{
result.Add(新しい予定(){開始日= currentDay、終了日= appt.EndDate})。
// APPTの他の属性コピー
}
戻り結果を、
}

/// <概要>
日(月曜日)の///計算開始日
/// </要約>
/// <PARAM NAME = "someDate">週</ param>のいずれかの日に
// / <戻る>返却日月曜日、特に後者、分、秒の値が等しいと着信である</戻り>
パブリック静的GetMondayDate日時(この日時someDate)
{
int型I = someDate.DayOfWeek - DayOfWeek.Monday;
IF(I == -1)は、i = 6; // I > = 0、列挙の理由として、日曜日はトップ、今回日曜日、月曜日= -1、+ 7 = 6必須にありました。
TimeSpan新しい新しいTS =のTimeSpan(I、0、0、0);
戻りsomeDate.Subtract(TS);
}

/// <要約>
/// UTC时间戳起点
/// </要約>
パブリック静的読み取り専用のDateTime UTCZero =新規のDateTime(1970、1、1、0、0、0、DateTimeKind.Utc)。

/// <まとめ>
タイムスタンプに///時、S
/// </要約>
/// <PARAM NAME = "時間"> </ param>の
/// <戻り値> </戻り値>
のpublic static ToTimestampロング(この日時時間)
{
リターン(ロング)(time.ToUniversalTime() - UTCZero).TotalSeconds;
}
/// <まとめ>
///タイムスタンプがミリ秒に変換され
/// </要約>
// / <PARAM名= "時間"> </ PARAM>
/// <戻り値> </戻り>
パブリック静的ロングToTimestampMilliseconds(この日時時間)
{
リターン(time.ToUniversalTime() - UTCZero).Milliseconds;
}
/// <概要>
/// UTCタイムスタンプを変換
/// </要約>
/// <paramの名前= "タイムスタンプ"> </ param>の
/// <リターン> </リターン>
パブリック静的日時ToUTCTime(この長いタイムスタンプ)
{
戻りUTCZero.AddSeconds(タイムスタンプ)。
}

/// <まとめ>
ローカルタイムスタンプに変換///
/// </要約>
/// <PARAM NAME = "タイムスタンプ"> </ param>の
/// <戻り値> </戻り値>
のpublic static DateTimeのToLocalTime(ロングこのタイムスタンプ)
{
ToUTCTime(タイムスタンプ).ToLocalTime()を返します;
}

静的な読み取り専用のDateTime unix_time_zero =新規のDateTime(1970、1、1)。

パブリック静的のTimeSpan GetUnixTimeSpan(日時UTC時刻)
{
UTC時刻を返す- unix_time_zero。
}

パブリック静的のTimeSpan GetUnixTimeSpanFromNow()
{
GetUnixTimeSpan(DateTime.UtcNow)を返します。
}

public static DateTimeのUnixTimeStampToDateTime(この長いunixTimeStamp)
{
// Unixタイムスタンプは秒である過去のエポック
のvar dtDateTime =新しいのDateTime(1970、1、1、0、0、0、0、DateTimeKind.Utc)。
試す
{
dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
}
キャッチ{}
dtDateTimeを返します。
}

public static DateTimeのMillisecondsToDateTime(この長いミリ秒単位)
{
// Unixタイムスタンプは秒である過去のエポック
のvar dtDateTime =新しいのDateTime(1970、1、1、0、0、0、0、DateTimeKind.Utc)。
試す
{
dtDateTime = dtDateTime.AddMilliseconds(ミリ秒).ToLocalTime();
}
キャッチ{}
dtDateTimeを返します。
}

/// <要約>
///距离1970/1/1的秒数、UTC时间
/// </要約>
/// <PARAM NAME = "UTC時刻"> </ param>の
/// <リターン> < /戻り>
パブリック静的長いGetUnixTimeStamp(この日時UTC時刻)
{
リターン(長い)GetUnixTimeSpan(UTC時刻).TotalSeconds。
}

/// <要約>
///获取本地时间UTC时间戳
/// </要約>
/// <PARAM NAME = "localtimeの"> </ param>の
/// <リターン> </リターン>
パブリック静的長いですGetLocalTimeUnixTimeStamp(この日時LOCALTIME)
{
リターン(長い)GetUnixTimeSpan(localTime.ToUniversalTime())TotalSeconds。
}

/// <要約>
///距离1970/1/1的毫秒数、UTC时间
/// </要約>
/// <PARAM NAME = "UTC時刻"> </ param>の
/// <リターン> < /戻り>
パブリック静的長いGetUnixTimeMillisecondsStamp(この日時UTC時刻)
{
リターン(長い)GetUnixTimeSpan(UTC時刻).TotalMilliseconds。
}

/// <まとめ>
///距離の1970年1月1日秒、UTC時間
/// </要約>
パブリック静的ロングGetUnixTimeStampFromNow()
{
戻り(ロング)GetUnixTimeSpanFromNow()TotalSeconds;
}


静的のDateTime year2013 =新規のDateTime(2013、1、1)。
パブリック静的長いGetTicketsFrom2013(この日時時間)
{
リターン(時間- year2013).Ticks。
}

パブリック静的ダブルGetTotalMinutesFrom2013(この日時時間)
{
Math.Floorを返す((時間- year2013).TotalMinutes)。
}

パブリック静的のDateTime GetDateTimeFrom2013TotalMinutes(この二重totalMinutes)
{
戻りyear2013.AddMinutes(totalMinutes)。
}

/// <要約>
///時間は2013年前であれば、0を返し、時間2013年1月1日の最初からの秒数を取得
/// </要約>
/// <PARAM NAME =「時間を「> </ PARAM>
/// <戻り値> </戻り>
パブリック静的UINTのGetSecondsFrom2013(この日時時間)
{
VARスパン=(時間- year2013).TotalSeconds;
IF(スパン> 0)
{
リターン(UINT)スパン。
}
戻り0;
}

/// <まとめ>
、数日前、数ヶ月の///フォーマットされた表示時間は、数時間前の前に、最初の数分、または秒
///ページには、使用しています
/// </要約>
公共の静的な文字列をDateStringFromNow (DateTime型DT)
{
; DT -のTimeSpanはDateTime.Now =またがる
IF(span.TotalDays> 365)
{
dt.ToShortDateString()を返す;
}
そうIF(span.TotalDays> 30)
{
String.Formatのを返す(「{0}ヶ月前に"(INT)Math.Floor(span.TotalDays / 30));
}
そうでなければ(span.TotalDays> 14)IF
{
リターン" 2週間前に「;
}
そうでなければ(span.TotalDays> IF 7)。
{
リターン"一週間前1";
}
(。span.TotalDays> 1)他のIF
{
(int型)数学、 "日前{0(String.Formatのを返します}"。床(span.TotalDays))。
}
そうであれば(span.TotalHours> 1)
{
String.Formatのを返す( "{0}小时前"、(INT)Math.Floor(span.TotalHours))。
}
もしそうでなければ(span.TotalMinutes> 1)
{
戻りString.Formatの( "{0}分钟前"、(INT)Math.Floor(span.TotalMinutes))。
}
そうであれば(span.TotalSeconds> = 1)
{
String.Formatのを返す( "{0}秒前"、(INT)Math.Floor(span.TotalSeconds))。
}

{
"1秒前"を返します。
}
}

公共の静的なint型GetIso8601WeekOfYear(DateTime値の時間)
{
//真剣にカンニング。その月曜日、火曜日または水曜日には、それはよ場合は
、木曜日、金曜日か土曜日であるものは何でも同じ週の#こと//
//と私たちは常に、これらの権利を取得
のDayOfWeek日= CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(時間)。
IF(日> = DayOfWeek.Monday &&日<= DayOfWeek.Wednesday)
{
時間= time.AddDays(3)。
}
私たちの調整日の週を返します//
リターンCultureInfo.InvariantCulture.Calendar.GetWeekOfYear(時間、CalendarWeekRule.FirstFourDayWeek、DayOfWeek.Monday)。
}

パブリック静的日時GetCurrentMonth(この日時日)
{
(1、day.Year、day.Month)新しい日時を返します。
}

パブリック静的ブールIsMonthLastDay(この日時日)
{
戻りday.Date ==新しい日時(day.Year、day.Month、1).AddMonths(1).AddDays(-1)。
}

パブリック静的日時StampToDateTime(文字列timeStampに)
{
日時dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(新規のDateTime(1970、1、1))。
長いLTIME = long.Parse(timeStampに+ "0000")。
TimeSpan toNow =新しいのTimeSpan(LTIME)。
dateTimeStart.Add(toNow)を返します。
}
パブリック静的文字列RsetDateTimeStr(ストリングのdateTime)
{
CONST文字列defalut1 = "1901年1月1日午後12時○○分00秒"。
constの文字列defalut2 = "0001/1/1午前0時00分00秒"。
場合(dateTimeの== defalut1 ||たdateTime == defalut2)
{
String.Emptyをを返します。
}

{
datetimeオブジェクトを返します。
}

}

// <まとめ>
///計算週の開始日(日月曜日)
/// </要約>
/// <PARAM NAME = "someDate">週のいずれかの日に</ param>の
/// <リターン>返却日月曜日、後者は、分、秒の値が等しいと着信である場合に特に</戻り>
パブリック静的CalculateFirstDateOfWeek日時(日時someDate)
{
int型I = someDate.DayOfWeek - DayOfWeek.Monday;
IF(I == -1)は、i = 6; // I> = 0、列挙の理由として、日曜日はトップ、今回日曜日、月曜日= -1、+ 7 = 6必須にありました。
TimeSpan新しい新しいTS =のTimeSpan(I、0、0、0);
戻りsomeDate.Subtract(TS);
}

/// <要約>
///(日日曜日)、週の計算終了日である
/// </要約>
/// <PARAM NAME = "someDate">週のいずれかの日に</ param>の
/// <リターン>場合に特に後者、分、日日曜日に戻り、そして第二の値が等しいと受信され</戻り>
パブリック静的CalculateLastDateOfWeek日時(日時someDate)
{
int型I = someDate.DayOfWeek - DayOfWeek.Sundayを、
IF(I =! 0)は、i = 7 - I; // 列挙理由があるため、日曜日、上部にあった7保存間隔から減算します。
TimeSpan新しい新しいTS =のTimeSpan(I、0、0、0);
戻りsomeDate.Add(TS);
}

/// <まとめ>
週( '週'の比較は、現在のシステム時刻が決定される)か否かを判断///日にち
/// </要約>
/// <PARAM NAME = "someDate"> </ PARAM>
/// <返し> </戻り>
パブリック静的BOOL IsThisWeek(日時someDate)
{
//対応月曜日someDate取得
日時someMon = CalculateFirstDateOfWeek(someDateを);
//取得月曜日
のDateTime nowMon = CalculateFirstDateOfWeek(日時.Now)
のTimeSpan TS = someMon - nowMon;
IF(ts.Days <0)
TS = -TS; //正かかる
IF(ts.Days> = 7)。
{
falseに戻り;
}

{
trueに戻り;
}
}

/// <要約>
///は7に変換され、0に、日曜日のデフォルトを週の最初の数日間で、現在の日付を取得します
/// </要約>
/// <PARAM NAME =「今」> </ param>の
/// </戻り> <返し>を
パブリック静的な文字列getDayOfWeek(今、この日時)
{
now.DayOfWeek ==戻りDayOfWeek.Sunday:now.DayOfWeek.ToString( "D")?」7" ;
}

/// <要約>
変換の2回目以降の午後十二時00分00秒2017年6月27日23時59分59秒2017年6月27日///時間にスプライシング
/// </要約>
/// <PARAM =名"今"> </ PARAM>
/// <戻り値> </戻り>
パブリック静的AppendDateHMS日時(現在、この日時)
{
now.AddHours(23)と.AddMinutes(59).AddSeconds(59)を返します;
}

/// <要約>
///現在の時刻を取得し、時間に正確な
/// </要約>
/// <戻り値> </戻り値>
のpublic static GetCurrentHourTimeのDateTime()
{
varが今DateTime.Nowは=;
VAR =時間日時の新しい新しい(now.Year、now.Month、now.Day、now.Hour、0、0);
時刻を返し;
}

パブリック静的文字列GetTimeStamp(この日時のdateTime)
{
リターン((Int32)を(DateTime.UtcNow.Subtract(新規のDateTime(1970、1、1)))TotalSeconds。).ToString();
}

プライベート静的日時MySqlNullDatetime =新しい日時(1、1、1、0、0、0);
パブリック静的ブールIsMySqlDateTimeNull(この日付と時刻@this)
{
戻りMySqlNullDatetime == @this。
}

おすすめ

転載: www.cnblogs.com/xiaohouye/p/11454990.html