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# 获取当前时间var str = DateTime.Now.Date.ToString("yyyyMMdd");