c#详解datetime使⽤⽰例
实例:
⽤户输⼊⼀个⽇期,要求输出这个⽇期是星期⼏和在这⼀年中的第⼏天:
复制代码代码如下:
//声明⼀个DateTime类型的变量⽤于存放⽤户输⼊的⽇期
DateTime dt;
Console.WriteLine("请输⼊⽇期:(例如:2000-01-01 或 2000/01/01)");
//把输⼊的⽇期字符串转换成⽇期格式类型
dt = DateTime.Parse(Console.ReadLine());
//因为DayOfWeek返回的是0、1、2、3、4、5、6,分别对应的是⽇、⼀、⼆、三、四、五、六
//Substring是进⾏检索字符串并返回匹配的指定长度的⼦字符串
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);
上述代码运⾏的结果如下
显⽰当前时期和时间的不同合格:
复制代码代码如下:
//以不同的格式显⽰当天⽇期和时间
Console.WriteLine("现在时间是:{0}", DateTime.Now.ToString("yyyy-M-d H:m:s"));
Console.WriteLine("现在时间是:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine("现在时间是:{0}", DateTime.Now.ToString("yyyy-MM-dd"));
Console.WriteLine("短⽇期字符串表⽰现在时间是:{0}", DateTime.Now.Date.ToShortDateString()); Console.WriteLine("长⽇期字符串表⽰现在时间是:{0}", DateTime.Now.Date.ToLongDateString ());上述代码的运⾏结果如下
⽅法⼀:
使⽤DateTime.ToString(format, DateTimeFormatInfo.InvariantInfo)
⽰例代码:
复制代码代码如下:
DateTime dt = DateTime.Now;
t.ToString("M/d/yyyy");
格式字符关联属性/说明
dShortDatePattern
DLongDatePattern
f完整⽇期和时间(长⽇期和短时间)
FFullDateTimePattern(长⽇期和长时间)
g常规(短⽇期和短时间)
G常规(短⽇期和长时间)
m、MMonthDayPattern
r、RRFC1123Pattern
s使⽤当地时间的SortableDateTimePattern(基于ISO8601)
tShortTimePattern
TLongTimePattern
uUniversalSortableDateTimePattern⽤于显⽰通⽤时间的格式
U使⽤通⽤时间的完整⽇期和时间(长⽇期和长时间)
y、YYearMonthPattern
d⽉中的某⼀天。⼀位数的⽇期没有前导零。
dd⽉中的某⼀天。⼀位数的⽇期有⼀个前导零。
ddd周中某天的缩写名称,在AbbreviatedDayNames中定义。
dddd周中某天的完整名称,在DayNames中定义。
M⽉份数字。⼀位数的⽉份没有前导零。
MM⽉份数字。⼀位数的⽉份有⼀个前导零。
MMM⽉份的缩写名称,在AbbreviatedMonthNames中定义。
MMMM⽉份的完整名称,在MonthNames中定义。
y不包含纪元的年份。如果不包含纪元的年份⼩于10,则显⽰不具有前导零的年份。
yy不包含纪元的年份。如果不包含纪元的年份⼩于10,则显⽰具有前导零的年份。
yyyy包括纪元的四位数的年份。
gg时期或纪元。如果要设置格式的⽇期不具有关联的时期或纪元字符串,则忽略该模式。
h12⼩时制的⼩时。⼀位数的⼩时数没有前导零。
hh12⼩时制的⼩时。⼀位数的⼩时数有前导零。
H24⼩时制的⼩时。⼀位数的⼩时数没有前导零。
HH24⼩时制的⼩时。⼀位数的⼩时数有前导零。
m分钟。⼀位数的分钟数没有前导零。
mm分钟。⼀位数的分钟数有⼀个前导零。
s秒。⼀位数的秒数没有前导零。
ss秒。⼀位数的秒数有⼀个前导零。
f秒的⼩数精度为⼀位。其余数字被截断。
ff秒的⼩数精度为两位。其余数字被截断。
fff秒的⼩数精度为三位。其余数字被截断。
ffff秒的⼩数精度为四位。其余数字被截断。
fffff秒的⼩数精度为五位。其余数字被截断。
ffffff秒的⼩数精度为六位。其余数字被截断。
fffffff秒的⼩数精度为七位。其余数字被截断。
t在AMDesignator或PMDesignator中定义的AM/PM指⽰项的第⼀个字符(如果存在)。
tt在AMDesignator或PMDesignator中定义的AM/PM指⽰项(如果存在)。
z时区偏移量(“+”或“-”后⾯仅跟⼩时)。⼀位数的⼩时数没有前导零。例如,太平洋标准时间是“-8”。
zz时区偏移量(“+”或“-”后⾯仅跟⼩时)。⼀位数的⼩时数有前导零。例如,太平洋标准时间是“-08”。
zzz完整时区偏移量(“+”或“-”后⾯跟有⼩时和分钟)。⼀位数的⼩时数和分钟数有前导零。例如,太平洋标准时间是“-
08:00”。
:在TimeSeparator中定义的默认时间分隔符。
/在DateSeparator中定义的默认⽇期分隔符。
%c其中c是格式模式(如果单独使⽤)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。
\c其中c是任意字符。照原义显⽰字符。若要显⽰反斜杠字符,请使⽤“\\”。
⽅法⼆:
复制代码代码如下:
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.ToLongTimeSt
ring().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();//问号为⼀个时间段
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();
//如果你还不明⽩,再看⼀下中⽂显⽰星期⼏的⽅法就应该懂了
//由于DayOfWeek返回的是数字的星期⼏,我们要把它转换成汉字⽅便我们阅读,有些⼈可能会⽤switch来⼀个⼀个地对照,其实不⽤那么⿇烦的
string[]Day=newstring[]{"星期⽇","星期⼀","星期⼆","星期三","星期四","星期五","星期六"};
Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];
//上周,同理,⼀个周是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();
//本⽉,很多⼈都会说本⽉的第⼀天嘛肯定是1号,最后⼀天就是下个⽉⼀号再减⼀天。当然这是对的
//⼀般的写法
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的字符格式化更简便
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上个⽉,减去⼀个⽉份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下个⽉,加去⼀个⽉份
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();
//本季度,很多⼈都会觉得这⾥难点,需要写个长长的过程来判断。其实不⽤的,我们都知道⼀年四个季度,⼀个季度三个⽉//⾸先我们先把⽇期推到本季度第⼀个⽉,然后这个⽉的第⼀天就是本季度的第⼀天了
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();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论