时间戳转换器

如何将格式为 2018-12-27T02:23:29 的字符串转换为 C# 中的 Unix 时间戳

日期:2023-02-24     浏览:199    
【中文标题】如何将格式为 2018-12-27T02:23:29 的字符串转换为 C# 中的 Unix 时间戳【英文标题】:How to convert a string formatted like 2018-12-27T02:23:29 to Unix Timestamp in C# 【发布时间】:2019-06-06 13:14:59 【问题描述】:

我假设我应该只是将字符串解析为 DateTime 并从那里开始......但是有没有更好的方法呢?

【问题讨论】:

什么是“更好的方法”?你为什么要以另一种方式来做呢?您有什么具体的事情想要完成或确定吗? How to get the unix timestamp in C#的可能重复 【参考方案1】:

您可以使用DateTimeOffset 结构,它有一个可以使用的ToUnixTimeSeconds(或ToUnixTimeMilliseconds)方法:

long unixTimestamp = DateTimeOffset.Parse("2018-12-27T02:23:29").ToUnixTimeSeconds();

如果你好奇它是如何完成的,来源在这里:https://referencesource.microsoft.com/#mscorlib/system/datetimeoffset.cs,8e1e87bf153c720e

【讨论】:

是的...这就是我要找的东西!【参考方案2】:

您应该使用 DateTime.Parse/ParseExact 系列函数中的某些东西将其解析为普通的 DateTime 对象,然后调用如下方法:

public int ToUnixTime(DateTime d)

    var epoch = new DateTime(1970,1,1);
    return (int)(d - epoch).TotalSeconds;

【讨论】:

【参考方案3】:

DateTime 在公历中内部存储自“0001 年 1 月 1 日午夜 12:00:00(0001 年 1 月 1 日 0:00:00 UTC)以来的“滴答”(一个发明的 Time unit)。作为 Int64/Long 数。因此,DateTime 在可能的值上轻松击败了 UnixTime。转换为 DateTime 应该是无损的。

任何 ToString() 调用,任何其他 Property 调用都将根据这些 Ticks(以及 ToString() 的区域性/时区设置)简单地计算值。其他一切都只是 Tick 值的解释。

您应该解析为 DateTime。从 Ticks 到像 UnixTime 这样不精确的东西是简单的数学运算。请参阅 Joels 的回答。

但请注意,DateTimes 的精度和准确性并不完全匹配:https://blogs.msdn.microsoft.com/ericlippert/2010/04/08/precision-and-accuracy-of-datetime/ DateTime.Now 通常只会以 18 毫秒的步长为您提供返回值。甚至秒表也存在值

【讨论】:

相关文章

如何使用 T 和 Z 将 LocalDate 格式化为 ISO 8601?

{】如何使用T和Z将LocalDate格式化为ISO8601?【英文标题】:HowtoformatLocalDatetoISO8601withTandZ?【发布时间】:2021-04-1206:07:34【问题描述】:我正在尝试生成一个随机日期和时间,并将其转换为"yyyy-MM-dd\'T\'HH:mm:ss\'Z\'"格式。这是...}

如何将 UTC 转换为 IST 时间格式 [重复]

{】如何将UTC转换为IST时间格式[重复]【英文标题】:HowtoconvertUTCtoISTtimeformat[duplicate]【发布时间】:2018-07-1421:55:24【问题描述】:输入:-2018-01-19T17:04:54.923Z;输出:-2018-01-1917:04:54;如何获得适用于所有浏览器的通用逻辑JAVASCRIPT【问...}

如何将 ISO8601 格式转换为毫秒?

{】如何将ISO8601格式转换为毫秒?【英文标题】:HowtoconvertISO8601formatintomilliseconds?【发布时间】:2014-12-1815:15:30【问题描述】:考虑到ISO8601在JSON中的使用频率,我还没有找到一种真正简单的方法,这让我感到非常惊讶。基本上,...}

如何获取格式为“2020-01-10T08: 47: 36.264Z”的日期?

{】如何获取格式为“2020-01-10T08:47:36.264Z”的日期?【英文标题】:Howtogetadateintheformat"2020-01-10T08:47:36.264Z"?【发布时间】:2021-08-2519:14:57【问题描述】:我正在尝试获取格式为“2020-01-10T08:47:36.264Z”的日期,但没有成功,...}

如何使用 PHP 将日期显示为 iso 8601 格式

{】如何使用PHP将日期显示为iso8601格式【英文标题】:Howtodisplayadateasiso8601formatwithPHP【发布时间】:2010-10-2812:59:03【问题描述】:我正在尝试使用PHP将我的MySQL数据库中的日期时间显示为iso8601格式的字符串,但它出现了错误。2008...}

将 UNIX 时间戳转换为格式化的日期字符串

{...UNIX时间戳转换为类似于此的日期字符串:2008-07-17T09:24:17Z如何将1333699439等时间戳转换为2008-07-17T09:24:17Z?【问题讨论】:【参考方案1】:像这样尝试gmda}

如何将浮点数转换为时间格式?

{】如何将浮点数转换为时间格式?【英文标题】:Howcanyouswitchafloattoatimeformat?【发布时间】:2016-02-2200:42:31【问题描述】:您好,我是初学者,所以请善待:)..在C++中,如果我有一个像12.5或13.25这样的浮点数,我如何将其转换为显...}

如何将原始 RGB 帧缓冲区文件转换为可视格式?

{】如何将原始RGB帧缓冲区文件转换为可视格式?【英文标题】:HowtoconvertarawRGBframebufferfiletoaviewableformat?【发布时间】:2012-09-1709:09:10【问题描述】:我知道以前有人问过这个问题。原始线程在这里howtoconvert16-bitRGBFrameBuffertoaviewab...}

如何将标签添加到prometheus格式中?

{】如何将标签添加到prometheus格式中?【英文标题】:Howtoaddlabelsintoprometheusformat?【发布时间】:2021-07-3114:21:39【问题描述】:invalid_timestampname="download_events"83转换为invalid_timestampname="download_events",label_name="foo"83我该怎么办?我已将...}

如何将自定义格式说明符添加到 fmt

{】如何将自定义格式说明符添加到fmt【英文标题】:Howtoaddcustomformatspecifiertofmt【发布时间】:2019-10-2315:55:38【问题描述】:我正在尝试用对fmt的调用替换自定义类型安全格式函数。当前实现支持\'u\'说明符,它将值打印为无符号...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号