C# - 格式化当前时间

Posted

技术标签:

【中文标题】C# - 格式化当前时间【英文标题】:C# - Formatting current time 【发布时间】:2011-12-06 13:43:24 【问题描述】:

在 C# 中,如何获取以下格式的当前 DateTime? 2011-08-10T21:36:01.6327538Z

【问题讨论】:

只是一个注释,我不认为它会做祖鲁时间符号。即它不会添加“Z”并转换为 UTC/GMT(我可能是错的,在这种情况下,请停止阅读)。如果您的时间已经在 UTC/GMT 中,那么您可以在之后添加“Z”。或者,如果您想要一个通用时间戳但不想转换本地时间,您可以使用“zzz”键打印与 UTC 的偏移量,这是一种普遍接受的通用日期表示法。 【参考方案1】:

试试这个:

    var xs = DateIime.Now;
    var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff");

看看这个msdn link

【讨论】:

【参考方案2】:

你可以试试:

DateTime.Now.ToString("o");

其中还包括时区组件。 - 或者 -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")

【讨论】:

【参考方案3】:
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")

请记住,DateTime.Now 有时只能精确到千分之一秒,具体取决于系统时钟。 This page 显示如下:

可以显示非常小的秒的小数单位,例如千分之一秒或十万分之一秒。但是,这些值可能没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 及更高版本以及 Windows Vista 操作系统上,时钟的分辨率约为 10-15 毫秒。

但是,如果您自己填充 DateTime,则可以使其更加精确。我不知道有任何其他内置库比DateTime.UtcNow 更精确。

另外,DateTime.UtcNow.ToString("o") 会给你一个有序的日期时间字符串。这并没有在末尾指定时区,因此如果您正在处理 Utc,您仍然需要在末尾添加 Z

【讨论】:

他想要一个 Z 放在最后。 哦,对不起,这就是我的意思——这就是我给你 +1 的原因。我不知道他为什么要一个 Z。 @rangitatanz:Z(我相信源自“零时”)表示它是 UTC 时间,所以它实际上应该是 DateTime.UtcNow 您会注意到 ***.com 还在其时间戳末尾添加了 Z【参考方案4】:

如果您想要 UTC 时间(这就是 Z 的含义),那么您需要确保它们是 UTC 时间...

DateTime.UtcNow.ToString("O");

或者假设你知道你的日期时间是本地的......

DateTime foo = MethodThatReturnsALocalTime();
foo.ToUniversalTime().ToString("O");

FWIW:DateTime.UtcNow 比 DateTime.Now 快,因为它不需要进行时区查找,在 Compact Framework 上,由于某种原因,这种差异可能非常明显。

【讨论】:

以上是关于C# - 格式化当前时间的主要内容,如果未能解决你的问题,请参考以下文章

C#关于DateTime得到的当前时间的格式问题

C#中怎么获取当前日期和时间

如何在 C# 中显示当前时间和日期

c# 获取当前时间var str = DateTime.Now.Date.ToString("yyyyMMdd");

c# 获取当前时间var str = DateTime.Now.Date.ToString("yyyyMMdd");

C# Unix时间戳转换为时间