ASP.NET 中,兩個時間相減,得到一個 TimeSpan 實例,TimeSpan 有一些屬性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意沒有 TotalTicks。
一、TimeSpan常量、字段
TimeSpan.MaxValue; // 10675199.02:48:05.4775807
TimeSpan.MinValue; //-10675199.02:48:05.4775808
TimeSpan.Zero; // 0.00:00:00.0
TimeSpan.TicksPerDay; //一天的 Tick 數: 864000000000
TimeSpan.TicksPerHour; //一小時的 Tick 數: 36000000000
TimeSpan.TicksPerMillisecond; //一毫秒的 Tick 數: 10000
TimeSpan.TicksPerMinute; //一分鐘的 Tick 數: 600000000
TimeSpan.TicksPerSecond; //一秒鐘的 Tick 數: 10000000
二、TimeSpan靜態方法
TimeSpan.Compare(); //對比
TimeSpan.Equals(); //=
TimeSpan.FromDays(); //從天數建立
TimeSpan.FromHours(); //從小時數建立
TimeSpan.FromMilliseconds(); //從毫秒數建立
TimeSpan.FromMinutes(); //從分鐘數建立
TimeSpan.FromSeconds(); //從秒數建立
TimeSpan.FromTicks(); //從 Tick 數建立
TimeSpan.Parse(); //從字符串建立
TimeSpan.ParseExact(); //從指定格式的字符串建立
TimeSpan.TryParse(); //嘗試從字符串建立
TimeSpan.TryParseExact(); //嘗試從指定格式的字符串建立
三、TimeSpan屬性
Days; //天部分 Hours; //小時部分
Milliseconds; //毫秒部分
Minutes; //分部分
Seconds; //秒部分
Ticks; //Tick 總數
TotalDays; //總天數
TotalHours; //總小時數
TotalMilliseconds; //總毫秒數
TotalMinutes; //總分鐘數
TotalSeconds; //總秒數
四、TimeSpan方法
Add(); // + CompareTo(); //比對
Duration(); //絕對值
Equals(); //
Negate(); //取反, + > -、- > +
Subtract(); // -, Add()的反操縱
ToString(); //格式化到字符串, .Net 4.0 較之前版本有變動
五、TimeSpan構建對象
protected void Button1_Click(object sender, EventArgs e)
...{
TimeSpan t1 = new TimeSpan(864000000000); //1.00:00:00
TimeSpan t2 = new TimeSpan(23, 59, 59); //23:59:59
TimeSpan t3 = new TimeSpan(30, 23, 59, 59); //30.23:59:59
TimeSpan t4 = new TimeSpan(30, 23, 59, 59, 999); //30.23:59:59.9990000
double f = 365.25;
TimeSpan t5 = TimeSpan.FromDays(f); //365.06:00:00
TimeSpan t6 = TimeSpan.FromHours(f * 24); //365.06:00:00
TimeSpan t7 = TimeSpan.FromMinutes(f * 24 * 60); //365.06:00:00
TimeSpan t8 = TimeSpan.FromSeconds(f * 24 * 60 * 60); //365.06:00:00
TimeSpan t9 = TimeSpan.FromMilliseconds(f * 24 * 60 * 60 * 1000); //365.06:00:00
TimeSpan t0 = TimeSpan.FromTicks((long)(f * 24 * 60 * 60 * 1000 * 10000)); //365.06:00:00
TextBox1.Text = string.Format("{0}n{1}n{2}n{3}n{4}n{5}n{6}n{7}n{8}n{9}",
t1, t2, t3, t4, t5, t6, t7, t8, t9, t0
);
}
求離最近發表時間的函數
public string DateStringFromNow(DateTime dt)
{
TimeSpan span = DateTime.Now - dt;
if (span.TotalDays > 60)
{
return dt.ToShortDateString();
}
else if ( span.TotalDays > 30 )
{
return "1個月前";
}
else if (span.TotalDays > 14)
{
return "2周前";
}
else if (span.TotalDays > 7)
{
return "1周前";
}
else if (span.TotalDays > 1)
{
return string.Format("{0}天前", (int)Math.Floor(span.TotalDays));
}
else if (span.TotalHours > 1)
{
return string.Format("{0}小時前", (int)Math.Floor(span.TotalHours));
}
else if (span.TotalMinutes > 1)
{
return string.Format("{0}分鐘前", (int)Math.Floor(span.TotalMinutes));
}
else if (span.TotalSeconds >= 1)
{
return string.Format("{0}秒前", (int)Math.Floor(span.TotalSeconds));
}
else
{
return "1秒前";
}
}
DateTime和TimeSpan中的常用成員及其說明
屬性 說明 Date 獲取此實例的日期部分。 Day 獲取此實例所表示的日期為該月中的第幾天。 DayOfWeek 獲取此實例所表示的日期是星期幾。 DayOfYear 獲取此實例所表示的日期是該年中的第幾天。 Hour 獲取此實例所表示日期的小時部分。 Millisecond 獲取此實例所表示日期的毫秒部分。 Minute 獲取此實例所表示日期的分鐘部分。 Month 獲取此實例所表示日期的月份部分。 Now 創建一個DateTime實例,它是此計算機上的當前本地日期和時間。 Second 獲取此實例所表示日期的秒部分。 TimeOfDay 獲取此實例的當天的時間。 Today 獲取當前日期。 Year 獲取此實例所表示日期的年份部分。
表01:DateTime類的常用屬性及其說明
方法 說明 Add 將指定的TimeSpan的值加到此實例的值上。 AddDays 將指定的天數加到此實例的值上。 AddHours 將指定的小時數加到此實例的值上。 AddMilliseconds 將指定的毫秒數加到此實例的值上。 AddMinutes 將指定的分鐘數加到此實例的值上。 AddMonths 將指定的月份數加到此實例的值上。 AddSeconds 將指定的秒數加到此實例的值上。 AddYears 將指定的年份數加到此實例的值上。 DaysInMonth 返回指定年份中指定月份的天數。 IsLeapYear 返回指定的年份是否為閏年的指示。 Parse 將日期和時間的指定字符串表示轉換成其等效的DateTime實例。 Subtract 從此實例中減去指定的時間或持續時間。 ToLongDateString 將此實例的值轉換為其等效的長日期字符串表示形式。 ToLongTimeString 將此實例的值轉換為其等效的長時間字符串表示形式。 ToShortTimeString 將此實例的值轉換為其等效的短時間字符串表示形式。 ToShortDateString 將此實例的值轉換為其等效的短日期字符串表示形式。
表02:DateTime結構的常用方法及其說明
表03和表04分別是TimeSpan結構的常用屬性和常用方法及其說明:
表03:TimeSpan結構的常用屬性及其說明
方法 說明 Add 將指定的TimeSpan添加到此實例中。 Duration 返回其值為此實例的絕對值的TimeSpan。 FromDays 返回表示指定天數的TimeSpan,其中對天數的指定精確到最接近的毫秒。 FromHours 返回表示指定小時數的TimeSpan,其中對小時數的指定精確到最接近的毫秒。 FromMilliseconds 返回表示指定毫秒數的TimeSpan。 FromMinutes 返回表示指定分鐘數的TimeSpan,其中對分鐘數的指定精確到最接近的毫秒。 FromSeconds 返回表示指定秒數的TimeSpan,其中對秒數的指定精確到最接近的毫秒。 Subtract 從此實例中減去指定的TimeSpan。表04:TimeSpan結構的常用方法及其說明