如何以不同的格式格式化日期时间

本文关键字:格式 格式化 日期 时间 | 更新日期: 2023-09-27 18:36:25

我有一个字符串,表示某种格式的日期,我希望以不同的格式。有人告诉我使用DateTime.(Try)ParseExact,所以我做了:

var dateString = "2016-02-26";
var formatString = "dd/MM/yyyy";
var parsedDate = DateTime.ParseExact(dateString, formatString, null);

你看,我想将日期格式化为 dd/MM/yyyy ,所以26/02/2016.但是,此代码会引发 FormatException:

字符串未被识别为有效的日期时间。

如何以不同的方式格式化日期时间?

如何以不同的格式格式化日期时间

首先,DateTimes 没有格式。日期时间包含某个时刻和一个标志,指示该时刻是本地、UTC 还是未指定。

DateTime 格式化的唯一时刻是将其值输出为字符串时。

提供给(Try)ParseExact的格式字符串是要分析的日期(时间)字符串的格式。请参阅 MSDN:自定义日期和时间格式字符串,了解如何编写自己的格式字符串。

因此,您正在寻找用于解析该字符串的代码是这样的,再次确保格式字符串与输入日期字符串的格式完全匹配:

var dateString = "2016-02-26";
var formatString = "yyyy-MM-dd";
var parsedDate = DateTime.ParseExact(dateString, formatString, null);

现在,parsedDate 包含一个 DateTime 值,您可以以所需的格式输出该值(请注意,您必须转义/,因为它将被解释为"当前区域性的日期分隔符",如上面的 MSDN 链接中所述):

var formattedDate = parsedDate.ToString("dd''/MM''/yyyy");

这将以所需的格式格式化日期:

26/02/2016
你可以

用它来String日期

DateTime.ParseExact(dateString, format, provider);

和提供者价值

CultureInfo provider = CultureInfo.InvariantCulture;

如Microsoft文档中所述