DateTime.ToString()函数有四个重载。一般用得多的就是不带参数的那个了。殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期。以下把一些情况罗列出来,供大家参考。有些在MSDN上有的就没有列出来了。
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
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
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
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
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日
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
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
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 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下午就是正常的。
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时间
有一些系统不支持上面的 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的时间时会自动转换好时间。不会丢掉时区。 (如果没有弄好这个,时间可能会出现预想不到的错)