首页 >后端开发 >C++ >如何在Unix时间戳和DateTime对象之间转换?

如何在Unix时间戳和DateTime对象之间转换?

DDD
DDD原创
2025-02-01 23:46:10356浏览

How to Convert Between Unix Timestamps and DateTime Objects?

Unix 时间戳与 DateTime 对象转换详解

许多应用场景都需要在 Unix 时间戳和 DateTime 对象之间进行转换。Unix 时间戳表示自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数,而 DateTime 对象则以更直观的方式表示时间,包含具体的日期和时间成分。

从 Unix 时间戳转换为 DateTime 对象

将 Unix 时间戳转换为 DateTime 对象,可以使用以下方法:

<code class="language-csharp">public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
{
    // Unix 时间戳是自纪元以来的秒数
    DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    dateTime = dateTime.AddSeconds(unixTimeStamp).ToLocalTime();
    return dateTime;
}</code>

对于 Java 开发者,由于时间戳以毫秒为单位,转换方法有所不同:

<code class="language-java">public static DateTime JavaTimeStampToDateTime(long javaTimeStamp) {
    // Java 时间戳是自纪元以来的毫秒数
    DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    dateTime = dateTime.plusMillis((long) javaTimeStamp).toLocalTime();
    return dateTime;
}</code>

从 DateTime 对象转换为 Unix 时间戳

反向转换可以使用以下代码片段:

<code class="language-csharp">public double DateTimeToUnixTimeStamp(DateTime dateTime)
{
    // Unix 时间戳是自纪元以来的秒数
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    TimeSpan span = (dateTime - epoch).ToLocalTime();
    return span.TotalSeconds;
}</code>

对于 Java,将 DateTime 对象转换为 Java 时间戳(毫秒)的方法如下:

<code class="language-java">public long DateTimeToJavaTimeStamp(DateTime dateTime) {
    // Java 时间戳是自纪元以来的毫秒数
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    return (dateTime.getMillis() - epoch.getMillis());
}</code>

这些方法提供了高效可靠的 Unix 时间戳和 DateTime 对象之间的转换方式,满足各种应用场景中时间表示方式不同的需求。

以上是如何在Unix时间戳和DateTime对象之间转换?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn