一、获得日期的方法:
DateTime.Now;本身获得的就是本地的当前日期和时间,一般都是以本地的短日期时间格式显示
DateTime.UtcNow 获得的才会是UTC时间!
所以所有的操作基本都用DateTime.Now就可以了,不用考虑是否要转化成本地时间了;
日期类型的ToString()方法接收的参数和其它类型的ToString()不一样;
其它类型,例如数值型(一定要是数值型的,不然不起作用)的ToString()可接受:“N”,(具体可参考本文最后部分)
以下是日期格式化是的精简的参数,用他们可以很方便的得到想要的格式;问题就是这些参数比较难记住,所以也附上另外一种比较直观的方法
- //2012-3-23
string short1 = System.DateTime.Now.ToString("d");
string simple1 = System.DateTime.Now.ToString("yyyy-MM-dd");
//2012年3月23日 16:30:15
string short2 = System.DateTime.Now.ToString("F");
string simple2 = System.DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
//2012年3月23日 16:30
string short3 = System.DateTime.Now.ToString("f");
string simple3 = System.DateTime.Now.ToString("yyyy年MM月dd日 HH:mm");
//2012-3-23 16:30:15
string short4= System.DateTime.Now.ToString("G");
string simple4 = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//2012-3-23 16:30
string short5 = System.DateTime.Now.ToString("g");
string simple5 = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm");
//16:30:15
string short6 = System.DateTime.Now.ToString("T");
string simple6 = System.DateTime.Now.ToString("HH:mm:ss");
//16:30
string short7= System.DateTime.Now.ToString("t");
string simple7 = System.DateTime.Now.ToString("HH:mm");
//2012年3月23日 8:30:15
string short8 = System.DateTime.Now.ToString("U");
string simple8 = System.DateTime.Now.ToUniversalTime().ToString("yyyy年MM月dd日 HH:mm:ss");
//2012-03-23 16:30:15Z
string short9 = System.DateTime.Now.ToString("u");
string simple9 = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//4月24日
string short10 = System.DateTime.Now.ToString("m");
string short100 = System.DateTime.Now.ToString("M");
string simple10 = System.DateTime.Now.ToString("MM月dd日");
//Tue, 24 Apr 2012 16:30:15 GMT
string short12 = System.DateTime.Now.ToString("r");
string short122 = System.DateTime.Now.ToString("R");
//string simple12 = System.DateTime.Now.ToString("f");
//2012年3月
string short13 = System.DateTime.Now.ToString("y");
string short133 = System.DateTime.Now.ToString("Y");
string simple13 = System.DateTime.Now.ToString("yyyy年MM月");
//2012-03-23T15:52:19.1562500+08:00
string short14 = System.DateTime.Now.ToString("o");
string short144 = System.DateTime.Now.ToString("O");
string simple14 = System.DateTime.Now.ToString("f");
//2012-03-23T16:30:15
string short15 = System.DateTime.Now.ToString("s");
string simple15 = System.DateTime.Now.ToString("f");
注意以下两种格式,一个用‘/'分割,一个用’-‘分割,但是我测试的是用’/' 作为分割符的时候不起作用,最终的仍然是以‘-’分割;对于yyyy/MM/dd的格式,可以随意的调整他们的顺序到你想要的效果,例如可以这样写MM-dd-yyyy,也可以这样dd-MM-yyyy(但是这样是没有什么意义的),如果想要月份03表示成3,则只需减少一个M就可以了:yyyy-M-dd
①:string nowTime = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd");
②:string nowTime = DateTime.Now.ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss");
二、日期的操作
/n为一个数,可以数整数,也可以是小数
DateTime dt = System.DateTime.Now;
dt.AddYears(n).ToString();
//时间加n年
dt.AddDays(n).ToString(); //加n天
dt.AddHours(n).ToString(); //加n小时
dt.AddMonths(n).ToString(); //加n个月
dt.AddSeconds(n).ToString(); //加n秒
dt.AddMinutes(n).ToString(); //加n分
我们可能需要将数值以一定的格式来呈现,就需要对数值进行格式化。我们使用格式字符串指定格式。格式字符串采用以下形式:Xn,其中 X为格式说明符,指定格式化类型,n 为精度说明符,控制格式化输出的有效位数或小数位数。
格式说明符 |
说明 |
示例 |
输出 |
C |
货币 |
2.5.ToString("C") |
¥2.50 |
D |
十进制数 |
25.ToString("D5") |
00025 |
E |
科学型 |
25000.ToString("E") |
2.500000E+005 |
F |
固定点 |
25.ToString("F2") |
25.00 |
G |
常规 |
2.5.ToString("G") |
2.5 |
N |
数字 |
2500000.ToString("N") |
2,500,000.00 |
X |
十六进制 |
255.ToString("X") |
FF |
当然,使用的时候要注意了,标题也写得很清楚了,是格式化数值,要是不是数值的话就不起作用了。可能你会说8.3肯定是数值了,但是却可能不是,因为这里说的数值,是指的格式。如:
decimal a = 8.3;
string b = "8.3";
a.ToString("F2") == "8.30";
b.ToString("F2") == "8.3";
通常我们有好多时候是从数据库里面读取的值,所以使用格式化数值的时候一定要清楚那个字段的数据格式是否是数值型的。