日期转换

本文关键字:转换 日期 | 更新日期: 2023-09-27 18:28:57

我需要帮助将当前日期转换为"2014年11月4日星期二00:00:00 UTC+0530"日期格式使用C#。

假设我有这样的日期:DateTime dt = DateTime.Now;

现在,我如何将其转换为上述格式。

日期转换

DateTime.ToString(string)允许您指定日期的格式。可以使用"自定义日期和时间格式字符串"构造自定义格式。

我想冒险回答你的问题,但无论如何。。

DateTime没有any隐式格式。它只有日期和时间值等。这就是为什么它不可能有任何格式。但是它们的string表示可以有一种格式。格式化DateTime很容易,只需要使用具有特定区域性的DateTime.ToString()方法即可。(在您的情况下,看起来InvariantCulture是一个很好的候选者)

DateTime dt = DateTime.Now;
dt.ToString("ddd MMM d HH:mm:ss 'UTC+0530' yyyy", CultureInfo.InvariantCulture);

返回

Tue Nov 4 14:20:36 UTC+0530 2014

AFAIK,时区缩写没有标准化,这就是为什么除了文本字符串分隔符之外,还有解析它们的方法。此外,由于DateTime不保留偏移值,您还需要将其解析为文字字符串分隔符

如果您想要+05:30而不是+0530"zzz"自定义格式说明符将是一个不错的选择,因为它从UTC获得了+-符号、本地操作系统时区的小时和分钟部分偏移。

根据您的建议,我构建了这个代码

DateTimeOffset localTime = DateTimeOffset.Now;
string.Format("{0:ddd MMM d HH:mm:ss} UTC+{1} {0:yyyy}", localTime, localTime.Offset.ToString("hhmm"));

及其生成正确的格式:"11月4日星期二18:25:48 UTC+0530 2014"