C#中与Java的Instant.now()等效的方法是什么?如何生成同格式时间?
在C#中生成与Java Instant.now()格式一致的时间字符串
Java中Instant.now()返回的是UTC时区的ISO 8601格式时间(如2019-01-21T05:47:26.853Z),C#没有直接的无参数方法能直接返回该格式,但可以通过以下方式生成完全一致的输出:
方法1:使用DateTime.UtcNow配合自定义格式字符串
基于UTC时间生成指定格式的字符串,其中fff对应三位毫秒数,末尾的Z直接作为固定字符输出:
string javaStyleInstant = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
方法2:使用DateTimeOffset.UtcNow格式化
DateTimeOffset更明确表示UTC偏移量(偏移值为0),格式化逻辑与上述一致:
string javaStyleInstant = DateTimeOffset.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
注意:如果使用ToString("o")(ISO 8601的"往返"格式),输出会包含七位小数的毫秒(如2019-01-21T05:47:26.8530000Z),和Java的三位毫秒格式不符,因此必须用自定义格式字符串来保证只保留三位毫秒。
内容的提问来源于stack exchange,提问作者A. S. Mahadik
相关产品推荐
相关产品推荐

