我需要帮助将当前日期转换为使用C#的“Tue Nov 4 00:00:00 UTC + 0530 2014”日期格式 。日期转换
说我有日期,如:DateTime dt = DateTime.Now;
现在,我怎样才能把它转换中提到的格式。
我需要帮助将当前日期转换为使用C#的“Tue Nov 4 00:00:00 UTC + 0530 2014”日期格式 。日期转换
说我有日期,如:DateTime dt = DateTime.Now;
现在,我怎样才能把它转换中提到的格式。
基于你的建议,我建立这个代码
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”
DateTime.ToString(string)
允许您指定日期的格式。您可以使用Custom Date and Time Format Strings构建自定义格式。
我觉得承担风险来回答你的问题,但无论如何..
一个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
不守offset值,你也需要解析它作为一个字符串分隔符
如果你想+05:30
代替+0530
结果,"zzz"
custom format specifier将是一个不错的选择,因为它得到+
或-
标志,本地操作系统时区的小时和分钟部分偏移量从UTC
。
如果您使用'“ddd MMM d HH':'mm':'ss'UTC + 0530'yyyy”'with冒号':'受单引号保护,我认为没有必要指定格式提供者(文化信息)。 – 2014-11-04 12:29:30
请注意''ddd MMM d HH:mm:ss'UTC'zzz yyyy“'将反映当前机器的时区('zzz'部分),但'05'和'30'之间将会出现一个冒号(假设印度/斯里兰卡语区)。 – 2014-11-04 12:31:12
@JeppeStigNielsen是的,但如果OP的“CurrentCulture”与英文文化不同,“ddd”和“MMM”可能会产生与“Tue”和“Nov”不同的缩写名称。 – 2014-11-04 12:31:14
[解析字符串可能重复到DateTime在C#](http://stackoverflow.com/questions/5366285/parse-string-to-datetime-in-c-sharp) – DaImTo 2014-11-04 12:17:28
可能的重复http://stackoverflow.com/questions/3323113/datetime-字符串与时区 – 2014-11-04 12:17:55
你的意思是你有一个'dt'的值,并且你想以特定的方式***格式化它。使用'.ToString(“...”)'。 – 2014-11-04 12:17:56