【发布时间】:2013-11-20 07:55:52
【问题描述】:
如何将“yyyy-MM-ddTHH:mm:ss”转换为“dd MMM yyyy”格式?例如,我想将 2013-04-16 05:30:05 转换为 2013 年 4 月 16 日。实现此目的的正确方法是什么?
【问题讨论】:
-
这两个都是文本表示,你有
DateTime对象还是yyyy-MM-ddTHH:mm:ss格式的字符串?
标签: c#
如何将“yyyy-MM-ddTHH:mm:ss”转换为“dd MMM yyyy”格式?例如,我想将 2013-04-16 05:30:05 转换为 2013 年 4 月 16 日。实现此目的的正确方法是什么?
【问题讨论】:
DateTime对象还是yyyy-MM-ddTHH:mm:ss格式的字符串?
标签: c#
先ParseExact,然后ToString(我假设你有字符串对象,如果你有日期时间对象,跳过第一行)
var dateTime = DateTime.ParseExact(yourDateString, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
var yourNewString = dateTime.ToString("dd MMM yyyy");
请注意,您在调试器中看到的DateTime 表示取决于您当前的文化。
【讨论】:
首先,DateTime 没有格式。但是,如果您已经有一个表示DateTime 格式为yyyy-MM-ddTHH:mm:ss 的字符串,并且您想将其转换为格式为dd MMM yyyy 的字符串日期,则需要先将其解析为DateTime。
因此使用DateTime.ParseExact:
DateTime dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null);
现在你可以使用DateTime.ToString:
string result = dt.ToString("dd MMM yyyy");
请注意,如果您想使用另一个 DateTimeFormat 解析,则需要将不同的 CultureInfo 对象传递给 ParseExact/ToString(例如,强制使用英文月份名称而不是德语:dt.ToString("dd MMM yyyy", CultureInfo.InvariantCulture)) .
【讨论】:
正如其他人提到的,DateTime 没有格式。要将字符串文字解析为 Date,您需要调用 DateTime.Parse(如果字符串是特定于文化的格式)或 DateTime.ParseExact,如果您需要传递格式字符串。
格式可以是自定义格式,如yyyy-MM-dd HH:mm:ss 或standard format strings 之一,例如。 s 为 yyyy-MM-ddTHH:mm:ss。
2013-04-16 05:30:05它不是在标准格式之一,所以你必须通过传递自定义格式字符串来解析:
var dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null);
另一方面,yyyy-MM-ddTHH:mm:ss 是 s 标准格式,所以你可以写:
var dt = DateTime.ParseExact("2013-04-16T05:30:05", "s", null);
【讨论】: