C# 日期與時間

1 篇文章 / 0 new
author
C# 日期與時間
任何包含一個以上字元(包含空白字元)的日期和時間格式字串都會解譯為自訂日期和時間格式字串,自訂日期和時間格式字串可以搭配日期和時間執行個體的 ToString 方法或是支援複合格式的方法使用。

轉換日期格式為字串
文法:(參數大小寫解譯不同 MM=month, mm=Minutes, HH=24hours, hh=12hours)
DateTime myDate = DateTime.Now;
string myDateString = myDate.ToString("yyyy-MM-dd HH:mm:ss");


2011-10-16 02:33:54
轉換字串格式為日期
DateTime dt = Convert.ToDateTime(myDateString);

2011/10/16 上午 02:33:54
計算兩個時間差
DateTime sDate = Convert.ToDateTime("2010-10-15 15:50:39");
DateTime eDate = Convert.ToDateTime("2010-10-25 15:50:39");
TimeSpan ts = sDate - eDate;
double days = ts.TotalDays;
//差距天

差距 -10 天
應用範例

DateTime dt = DateTime.Now; 取得目前日期時間

本週一的日期
DateTime startWeek = dt.AddDays(1-Convert.ToInt32(dt.DayOfWeek.ToString("d")));
本週日的日期
DateTime endWeek = startWeek.AddDays(6);
本月之月初的日期
DateTime startMonth = dt.AddDays(1 - dt.Day);
本月之月底的日期
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);
本季初的日期
DateTime startQuarter = dt.AddMonths(0-(dt.Month-1) % 3).AddDays(1-dt.Day);
本季末的日期
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);
本年年初的日期
DateTime startYear = new DateTime(dt.Year, 1, 1);
本年年末的日期
DateTime endYear = new DateTime(dt.Year, 12, 31);
上年度的起止日期
startBeforeYear = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01"))
.AddYears(-1).ToShortDateString();

endBeforeYear = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01"))
.AddDays(-1).ToShortDateString();
下年度的起止日期
startNextYear = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01"))
.AddYears(1).ToShortDateString();

endNextYear = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01"))
.AddYears(2).AddDays(-1).ToShortDateString()
;

其他
DateTime dt = DateTime.Now;
dt.ToString();//2005-11-5 13:21:25
dt.ToFileTime().ToString();//127756416859912816
dt.ToFileTimeUtc().ToString();//127756704859912816
dt.ToLocalTime().ToString();//2005-11-5 21:21:25
dt.ToLongDateString().ToString();//2005年11月5日
dt.ToLongTimeString().ToString();//13:21:25
dt.ToOADate().ToString();//38661.5565508218
dt.ToShortDateString().ToString();//2005-11-5
dt.ToShortTimeString().ToString();//13:21
dt.ToUniversalTime().ToString();//2005-11-5 5:21:25
dt.Year.ToString();//2005
dt.Date.ToString();//2005-11-5 0:00:00
dt.DayOfWeek.ToString();//Saturday
dt.DayOfYear.ToString();//309
dt.Hour.ToString();//13
dt.Millisecond.ToString();//441
dt.Minute.ToString();//30
dt.Month.ToString();//11
dt.Second.ToString();//28
dt.Ticks.ToString();//632667942284412864
dt.TimeOfDay.ToString();//13:30:28.4412864
dt.ToString();//2005-11-5 13:47:04
dt.AddYears(1).ToString();//2006-11-5 13:47:04
dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
dt.AddMonths(1).ToString();//2005-12-5 13:47:04
dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
dt.CompareTo(dt).ToString();//0
dt.Add(?).ToString();//問號為一個時間段
dt.Equals("2005-11-6 16:11:04").ToString();//False
dt.Equals(dt).ToString();//True
dt.GetHashCode().ToString();//1474088234
dt.GetType().ToString();//System.DateTime
dt.GetTypeCode().ToString();//DateTime
   
dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25
dt.GetDateTimeFormats('t')[0].ToString();//14:06
dt.GetDateTimeFormats('y')[0].ToString();//2005年11月
dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日
dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05
dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05
dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日
dt.GetDateTimeFormats('M')[0].ToString();//11月5日
dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06
dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06
dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT
string.Format("{0:d}",dt);//2005-11-5
string.Format("{0:D}",dt);//2005年11月5日
string.Format("{0:f}",dt);//2005年11月5日 14:23
string.Format("{0:F}",dt);//2005年11月5日 14:23:23
string.Format("{0:g}",dt);//2005-11-5 14:23
string.Format("{0:G}",dt);//2005-11-5 14:23:23
string.Format("{0:M}",dt);//11月5日
string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT
string.Format("{0:s}",dt);//2005-11-05T14:23:23
string.Format("{0:t}",dt);//14:23
string.Format("{0:T}",dt);//14:23:23
string.Format("{0:u}",dt);//2005-11-05 14:23:23Z
string.Format("{0:U}",dt);//2005年11月5日 6:23:23
string.Format("{0:Y}",dt);//2005年11月
string.Format("{0}",dt);//2005-11-5 14:23:23
string.Format("{0:yyyyMMddHHmmssffff}",dt);

from http://www.eion.com.tw/Blogger/?Pid=1150,http://icejuly.pixnet.net/blog/...