c#詳解datetime使用示例
實(shí)例:
用戶輸入一個(gè)日期,要求輸出這個(gè)日期是星期幾和在這一年中的第幾天:
//聲明一個(gè)DateTime類型的變量用于存放用戶輸入的日期
DateTime dt;
Console.WriteLine("請(qǐng)輸入日期:(例如:2000-01-01 或 2000/01/01)");
//把輸入的日期字符串轉(zhuǎn)換成日期格式類型
dt = DateTime.Parse(Console.ReadLine());
//因?yàn)镈ayOfWeek返回的是0、1、2、3、4、5、6,分別對(duì)應(yīng)的是日、一、二、三、四、五、六
//Substring是進(jìn)行檢索字符串并返回匹配的指定長(zhǎng)度的子字符串
string str = "日一二三四五六".Substring((int)dt.DayOfWeek, 1);
Console.WriteLine("{0}年{1}月{2}日是星期{3}", dt.Year, dt.Month, dt.Day, str);
Console.WriteLine("{0}年{1}月{2}日是這一年的第{3}天", dt.Year, dt.Month, dt.Day, dt.DayOfYear);
Console.WriteLine("{0}是星期{1}", dt.ToShortDateString(), str);
Console.WriteLine("{0}是這一年的第{1}天", dt.ToLongDateString(), dt.DayOfYear);
上述代碼運(yùn)行的結(jié)果如下
顯示當(dāng)前時(shí)期和時(shí)間的不同合格:
//以不同的格式顯示當(dāng)天日期和時(shí)間
Console.WriteLine("現(xiàn)在時(shí)間是:{0}", DateTime.Now.ToString("yyyy-M-d H:m:s"));
Console.WriteLine("現(xiàn)在時(shí)間是:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine("現(xiàn)在時(shí)間是:{0}", DateTime.Now.ToString("yyyy-MM-dd"));
Console.WriteLine("短日期字符串表示現(xiàn)在時(shí)間是:{0}", DateTime.Now.Date.ToShortDateString());
Console.WriteLine("長(zhǎng)日期字符串表示現(xiàn)在時(shí)間是:{0}", DateTime.Now.Date.ToLongDateString ());
上述代碼的運(yùn)行結(jié)果如下
日期類型(DateTime)格式化
方法一:
使用DateTime.ToString(format, DateTimeFormatInfo.InvariantInfo)
示例代碼:
DateTime dt = DateTime.Now;
t.ToString("M/d/yyyy");
參數(shù)format格式詳細(xì)用法:
格式字符關(guān)聯(lián)屬性/說(shuō)明
dShortDatePattern
DLongDatePattern
f完整日期和時(shí)間(長(zhǎng)日期和短時(shí)間)
FFullDateTimePattern(長(zhǎng)日期和長(zhǎng)時(shí)間)
g常規(guī)(短日期和短時(shí)間)
G常規(guī)(短日期和長(zhǎng)時(shí)間)
m、MMonthDayPattern
r、RRFC1123Pattern
s使用當(dāng)?shù)貢r(shí)間的SortableDateTimePattern(基于ISO8601)
tShortTimePattern
TLongTimePattern
uUniversalSortableDateTimePattern用于顯示通用時(shí)間的格式
U使用通用時(shí)間的完整日期和時(shí)間(長(zhǎng)日期和長(zhǎng)時(shí)間)
y、YYearMonthPattern
下面列出可被合并以構(gòu)造自定義模式的模式:
d月中的某一天。一位數(shù)的日期沒(méi)有前導(dǎo)零。
dd月中的某一天。一位數(shù)的日期有一個(gè)前導(dǎo)零。
ddd周中某天的縮寫(xiě)名稱,在AbbreviatedDayNames中定義。
dddd周中某天的完整名稱,在DayNames中定義。
M月份數(shù)字。一位數(shù)的月份沒(méi)有前導(dǎo)零。
MM月份數(shù)字。一位數(shù)的月份有一個(gè)前導(dǎo)零。
MMM月份的縮寫(xiě)名稱,在AbbreviatedMonthNames中定義。
MMMM月份的完整名稱,在MonthNames中定義。
y不包含紀(jì)元的年份。如果不包含紀(jì)元的年份小于10,則顯示不具有前導(dǎo)零的年份。
yy不包含紀(jì)元的年份。如果不包含紀(jì)元的年份小于10,則顯示具有前導(dǎo)零的年份。
yyyy包括紀(jì)元的四位數(shù)的年份。
gg時(shí)期或紀(jì)元。如果要設(shè)置格式的日期不具有關(guān)聯(lián)的時(shí)期或紀(jì)元字符串,則忽略該模式。
h12小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。
hh12小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。
H24小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。
HH24小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。
m分鐘。一位數(shù)的分鐘數(shù)沒(méi)有前導(dǎo)零。
mm分鐘。一位數(shù)的分鐘數(shù)有一個(gè)前導(dǎo)零。
s秒。一位數(shù)的秒數(shù)沒(méi)有前導(dǎo)零。
ss秒。一位數(shù)的秒數(shù)有一個(gè)前導(dǎo)零。
f秒的小數(shù)精度為一位。其余數(shù)字被截?cái)唷?BR>ff秒的小數(shù)精度為兩位。其余數(shù)字被截?cái)唷?BR>fff秒的小數(shù)精度為三位。其余數(shù)字被截?cái)唷?BR>ffff秒的小數(shù)精度為四位。其余數(shù)字被截?cái)唷?BR>fffff秒的小數(shù)精度為五位。其余數(shù)字被截?cái)唷?BR>ffffff秒的小數(shù)精度為六位。其余數(shù)字被截?cái)唷?BR>fffffff秒的小數(shù)精度為七位。其余數(shù)字被截?cái)唷?BR>t在AMDesignator或PMDesignator中定義的AM/PM指示項(xiàng)的第一個(gè)字符(如果存在)。
tt在AMDesignator或PMDesignator中定義的AM/PM指示項(xiàng)(如果存在)。
z時(shí)區(qū)偏移量(“+”或“-”后面僅跟小時(shí))。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-8”。
zz時(shí)區(qū)偏移量(“+”或“-”后面僅跟小時(shí))。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-08”。
zzz完整時(shí)區(qū)偏移量(“+”或“-”后面跟有小時(shí)和分鐘)。一位數(shù)的小時(shí)數(shù)和分鐘數(shù)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-08:00”。
:在TimeSeparator中定義的默認(rèn)時(shí)間分隔符。
/在DateSeparator中定義的默認(rèn)日期分隔符。
%c其中c是格式模式(如果單獨(dú)使用)。如果格式模式與原義字符或其他格式模式合并,則可以省略“%”字符。
\c其中c是任意字符。照原義顯示字符。若要顯示反斜杠字符,請(qǐng)使用“\\”。
方法二:
DateTimedt=DateTime.Now;
Label1.Text=dt.ToString();//2005-11-513:21:25
Label4.Text=dt.ToLocalTime().ToString();//2005-11-521:21:25Label5.Text=dt.ToLongDateString().ToString();//2005年11月5日Label6.Text=dt.ToLongTimeString().ToString();//13:21:25
dt.ToString();//2005-11-513:21:25
dt.ToFileTime().ToString();//127756416859912816
dt.ToFileTimeUtc().ToString();//127756704859912816
dt.ToLocalTime().ToString();//2005-11-521: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-55:21:25
dt.Year.ToString();//2005
dt.Date.ToString();//2005-11-50: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-513:47:04
dt.AddYears(1).ToString();//2006-11-513:47:04
dt.AddDays(1.1).ToString();//2005-11-616:11:04
dt.AddHours(1.1).ToString();//2005-11-514:53:04
dt.AddMilliseconds(1.1).ToString();//2005-11-513:47:04
dt.AddMonths(1).ToString();//2005-12-513:47:04
dt.AddSeconds(1.1).ToString();//2005-11-513:47:05
dt.AddMinutes(1.1).ToString();//2005-11-513:48:10
dt.AddTicks(1000).ToString();//2005-11-513:47:04
dt.CompareTo(dt).ToString();//0
dt.Add(?).ToString();//問(wèn)號(hào)為一個(gè)時(shí)間段
dt.Equals("2005-11-616: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();//20051105
dt.GetDateTimeFormats('D')[2].ToString();//星期六20051105
dt.GetDateTimeFormats('D')[3].ToString();//星期六2005年11月5日
dt.GetDateTimeFormats('M')[0].ToString();//11月5日
dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5
datetime操作
//今天
DateTime.Now.Date.ToShortDateString();
//昨天,就是今天的日期減一
DateTime.Now.AddDays(-1).ToShortDateString();
//明天,同理,加一
DateTime.Now.AddDays(1).ToShortDateString();
//本周(要知道本周的第一天就得先知道今天是星期幾,從而得知本周的第一天就是幾天前的那一天,要注意的是這里的每一周是從周日始至周六止
DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
//如果你還不明白,再看一下中文顯示星期幾的方法就應(yīng)該懂了
//由于DayOfWeek返回的是數(shù)字的星期幾,我們要把它轉(zhuǎn)換成漢字方便我們閱讀,有些人可能會(huì)用switch來(lái)一個(gè)一個(gè)地對(duì)照,其實(shí)不用那么麻煩的
string[]Day=newstring[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];
//上周,同理,一個(gè)周是7天,上周就是本周再減去7天,下周也是一樣
DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16(DateTime.Now.DayOfWeek)))-7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16(DateTime.Now.DayOfWeek)))-7).ToShortDateString();
//下周
DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16(DateTime.Now.DayOfWeek)))+7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16(DateTime.Now.DayOfWeek)))+7).ToShortDateString();
//本月,很多人都會(huì)說(shuō)本月的第一天嘛肯定是1號(hào),最后一天就是下個(gè)月一號(hào)再減一天。當(dāng)然這是對(duì)的
//一般的寫(xiě)法
DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+"1";//第一天
DateTime.Parse(DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+"1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一天
//巧用C#里ToString的字符格式化更簡(jiǎn)便
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上個(gè)月,減去一個(gè)月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下個(gè)月,加去一個(gè)月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();
//7天后
DateTime.Now.Date.ToShortDateString();
DateTime.Now.AddDays(7).ToShortDateString();
//7天前
DateTime.Now.AddDays(-7).ToShortDateString();
DateTime.Now.Date.ToShortDateString();
//本年度,用ToString的字符格式化我們也很容易地算出本年度的第一天和最后一天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();
//上年度,不用再解釋了吧
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
//下年度
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();
//本季度,很多人都會(huì)覺(jué)得這里難點(diǎn),需要寫(xiě)個(gè)長(zhǎng)長(zhǎng)的過(guò)程來(lái)判斷。其實(shí)不用的,我們都知道一年四個(gè)季度,一個(gè)季度三個(gè)月
//首先我們先把日期推到本季度第一個(gè)月,然后這個(gè)月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
//同理,本季度的最后一天就是下季度的第一天減一
DateTime.Parse(DateTime.Now.AddMonths(3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下季度,相信你們都知道了。。。。收工
DateTime.Now.AddMonths(3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//上季度
DateTime.Now.AddMonths(-3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
- 詳解c# 中的DateTime
- C# DateTime與時(shí)間戳轉(zhuǎn)換實(shí)例
- C#中的DateTime是值類型還是引用類型
- 深入理解C# DateTime日期格式化
- C# 中DateTime 的使用技巧匯總
- C#中比較常用的DateTime結(jié)構(gòu)的使用方法
- C#中DateTime日期類型格式化顯示方法匯總
- c# DateTime常用操作實(shí)例(datetime計(jì)算時(shí)間差)
- 關(guān)于C#中DateTime常用方法概述
- C#時(shí)間格式化(Datetime)用法詳解
- c# datetime方法應(yīng)用介紹
- C#中DateTime函數(shù)的詳細(xì)用法
相關(guān)文章
C#3.0使用EventLog類寫(xiě)Windows事件日志的方法
這篇文章主要介紹了C#3.0使用EventLog類寫(xiě)Windows事件日志的方法,以簡(jiǎn)單實(shí)例形式分析了C#寫(xiě)windows事件日志的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08關(guān)于C#中GUI編程的標(biāo)準(zhǔn)事件問(wèn)題
這篇文章主要介紹了C#中GUI編程的標(biāo)準(zhǔn)事件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01C# 委托的三種調(diào)用示例(同步調(diào)用 異步調(diào)用 異步回調(diào))
本文將主要通過(guò)同步調(diào)用、異步調(diào)用、異步回調(diào)三個(gè)示例來(lái)講解在用委托執(zhí)行同一個(gè)加法類的時(shí)候的的區(qū)別和利弊2013-12-12Unity3D使用鼠標(biāo)旋轉(zhuǎn)縮放平移視角
這篇文章主要為大家詳細(xì)介紹了Unity3D使用鼠標(biāo)旋轉(zhuǎn)縮放平移視角,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07