DateTime format 格式化

DateTime.ToString()函数有四个重载。一般用得多的就是不带参数的那个了。殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期。以下把一些情况罗列出来,供大家参考。有些在MSDN上有的就没有列出来了。

  1. y代表年份,注意是小写的y,大写的Y并不代表年份。
  2. M表示月份。 如果只有一个M 当月份是两位数的时候也会自动两位数
  3. d表示日期,注意D并不代表什么。
  4. h或H表示小时,h用的是12小时制,H用的是24小时制。
  5. m表示分钟。
  6. s表示秒。注意S并不代表什么。 (单个s输出的是 2021-09-18T12:23:44 跟语言文化无关)
  7. f 毫秒
  8. tt 表示上午下午
  9. zz 时区偏移量
  10. o ISO 8601 (跟语言文化无关)
  11. u universal sortable (datetime的话要自己转成Utc) 跟语言文化无关

年 y

	var dateTime = DateTime.Parse("2021-9-18");
	string yy = dateTime.ToString("y-MM"); //21-09 一个y也是后面的年份
	Console.WriteLine(yy);
	yy = dateTime.ToString("yy-MM"); 
	Console.WriteLine(yy);//21-09
	//yyy或更多的y
	yy = DateTime.Now.ToString("yyyy");
	Console.WriteLine(yy); 2021

月 M

	var dateTime = DateTime.Parse("2021-9-18");

	//月份 M 注意是大写
	var mm =  dateTime.ToString("yyyy-M");
	Console.WriteLine(mm); //2021-9
	mm =  dateTime.ToString("yyyy-MM");
	Console.WriteLine(mm); //2021-09 两个数字的月份。

	//MMM 3个M
	//如果是中文版的操作系统,则会输出:9月.
	mm =  dateTime.ToString("yyyy-MMMM", new System.Globalization.CultureInfo("zh-cn"));
	Console.WriteLine(mm); //2021-9月
						   //英文
	mm =  dateTime.ToString("yyyy-MMM", new System.Globalization.CultureInfo("en-us"));
	Console.WriteLine(mm); //2021-Sep

	// MMMMM 四个M 输出汉字 英文输出全称

	mm =  dateTime.ToString("yyyy-MMMM", new System.Globalization.CultureInfo("zh-cn"));
	Console.WriteLine(mm); //2021-九月
	mm =  dateTime.ToString("yyyy-MMMM", new System.Globalization.CultureInfo("en-us"));
	Console.WriteLine(mm); //2021-September

日期或星期 d

var dateTime = DateTime.Parse("2021-9-18");

//一个d
var dd = dateTime.ToString("d");
Console.WriteLine(dd); //	var dd =  dateTime.ToString("d");


//两个d
dd = dateTime.ToString("dd");
Console.WriteLine(dd); //18

//三个d
dd = dateTime.ToString("ddd");
Console.WriteLine(dd); //周六

dd = dateTime.ToString("ddd",new System.Globalization.CultureInfo("en-us"));
Console.WriteLine(dd); //Sat

//四个d
dd = dateTime.ToString("dddd");
Console.WriteLine(dd); //星期六

dd = dateTime.ToString("dddd", new System.Globalization.CultureInfo("en-us"));
Console.WriteLine(dd); //Saturday

小时 h H

	var dateTime = DateTime.Parse("2021-9-18 15:23:00.123");

//一个h不支持了。

//12小时制
	var hh = dateTime.ToString("hh");
	Console.WriteLine(hh); // 03

   hh = dateTime.ToString("hh tt");
	Console.WriteLine(hh); //03 下午

    hh = dateTime.ToString("hh tt",new System.Globalization.CultureInfo("en-us"));
	Console.WriteLine(hh); //03 PM
    
//大写HH 24小时制
	hh = dateTime.ToString("HH");
	Console.WriteLine(hh); //15

	hh = dateTime.ToString("HHH");
	Console.WriteLine(hh); //15

分钟 m

	var dateTime = DateTime.Parse("2021-9-18 15:23:00.123");

//两个mm
	var mm = dateTime.ToString("mm");
	Console.WriteLine(mm); //23

	mm = dateTime.ToString("mmm");
	Console.WriteLine(mm); //23

    //一个m 跟我们的预期不符合了
    mm = dateTime.ToString("m");
	Console.WriteLine(mm);// 9月18日

秒 s

	var dateTime = DateTime.Parse("2021-9-18 15:23:09.123");

	var ss = dateTime.ToString("ss");
	Console.WriteLine(ss); //09

	var dateTime2 = new DateTime(2021, 9, 18, 12, 23, 44, DateTimeKind.Local);
	Console.WriteLine(dateTime2.ToString("s")); //2021-09-18T12:23:44

毫秒 f

	var dateTime = DateTime.Parse("2021-9-18 15:23:09.1234");

	var ff = dateTime.ToString("ff");
	Console.WriteLine(ff); //12

	 ff = dateTime.ToString("fff");
	Console.WriteLine(ff); //123

	ff = dateTime.ToString("ffff");
	Console.WriteLine(ff); //1234

时间偏移量 zz

	var dateTime = DateTime.Parse("2021-9-18 15:23:09.1234");

	var zz = dateTime.ToString("zz");
	Console.WriteLine(zz); //+08

	zz = dateTime.ToString("zzz");
	Console.WriteLine(zz); //+08:00

12am 12h 上午是什么鬼

12Am 12上午是什么

	var dateTime = DateTime.Parse("2021-9-18 00:23:09.1234");

	var zz = dateTime.ToString("yyyy-MM-dd hhttmm");
    //零点输出的就是12am
	
	var dateTime2 = new DateTime(2022,5,18);
	dateTime2.ToString(new System.Globalization.CultureInfo("en-us"))
	// 5/18/2022 12:00:00 AM

12下午就是正常的。

o ISO8601

	var dateTime = new DateTime(2021,9,18,12,23,44,DateTimeKind.Local);
	var iso = dateTime.ToString("o");
	Console.WriteLine(iso); //2021-09-18T12:23:44.0000000+08:00
	
	iso = dateTime.ToUniversalTime().ToString("o");
	Console.WriteLine(iso); //2021-09-18T04:23:44.0000000Z   Z表示0时间

u

有一些系统不支持上面的 ISO8601 可以用一下u

	var dateTime = new DateTime(2021, 9, 18, 12, 23, 44, DateTimeKind.Local);

	Console.WriteLine(dateTime.ToString("u")); //2021-09-18 12:23:44Z 错误的格式 只是加了 Z
	Console.WriteLine(dateTime.ToUniversalTime().ToString("u")); // 2021-09-18 12:23:44Z 正确的格式
	DateTimeOffset kk= dateTime;
	Console.WriteLine(kk.ToString("u"));  // 2021-09-18 12:23:44Z 正确的格式

C# WebAPI 在接收符合 ISO8601的时间时会自动转换好时间。不会丢掉时区。 (如果没有弄好这个,时间可能会出现预想不到的错)

最近更新的
...