将 Linux/Unix 时间转换为人类可读的日期格式2025年03月17日 | 阅读 9 分钟 Unix 时间周期,也简称为“纪元周期”、“POSIX 周期”或“Unix 周期”,是一种时间跟踪系统,它表示自 Unix 纪元开始以来的秒数。Unix 纪元开始于 1970 年 2 月 1 日,00:00。00:00 UTC 被定义。 Unix 时间始于 1970 年 1 月 1 日 UTC 午夜。它计算自那时以来的总秒数。例如,Unix 时间戳 1716620142 表示自 1970 年 1 月 1 日以来经过的秒数。Unix 纪元周期已被广泛用于各种目的,包括文件系统、数据库和网络协议,因为它简单且提供了一种处理日期和季节的一致方法。 ![]() Unix 纪元时间不考虑闰秒。它假定每天正好是 86400 秒,从而简化了计算,但随着时间的推移会引入一些误差。它在系统中提供了一致的时间测量。使用单个整数值来表示时间可以简化时间计算和比较。可以使用 Linux Bash 命令和编程语言在 Unix 时间和人类可读日期之间进行转换。例如,可以在类 Unix 系统上使用 date 命令,并且大多数编程语言都提供处理此类转换的库。 在 Linux/Unix 中使用命令在 Linux 中,您可以使用 date 命令将 Linux 时间转换为人类可读的格式。 打开终端并运行以下命令来生成 Unix 时间戳 命令 输出 ![]() 现在,要将其转换为人类可读的格式,请运行以下命令 命令 在此处输入早期命令生成的戳。例如: 输出 ![]() 在 Mac OS 中在 macOS 中,date 命令的语法略有不同。 使用以下命令生成时间戳 命令 输出 ![]() 要转换为人类可读的格式,请执行以下命令 命令 将 <timestamp> 替换为生成的时间戳。 输出 ![]() 将秒转换为日期时间格式
示例让我们通过一个例子来理解。这里,我们以 1716547702 秒为例。 总秒数 = 1716547702 一天的总秒数:86400 转换为天数 总天数 = 1716547702 / 86400 = 19867 剩余秒数 1716547702 % 86400 = 41102 小时、分钟和秒 1 小时 = 3600 秒 1 分钟 = 60 秒 小时 41200 / 3600 = 11 剩余秒数 41102 % 3600 = 4102 分钟 = 4102 / 60 = 68 秒 = 4102 % 60 = 2 确定年份从 1970 年开始,减去每年的天数,直到总天数适合当前年份。 闰年和非闰年的计算
此过程将继续进行,直到确定年份为止。 月份和日期识别每个月的天数并减去每个月的天数。 月份和日期的计算 一月:31 天 二月:28 天 三月:31 天 此过程将继续进行,直到确定月份为止。 计算一天中的时间将剩余的秒数转换为小时、分钟和秒。 小时 = 11 分钟 = 68 秒:2 使用 Javascript 实现上述方法我们在上面看到的 JavaScript 代码中使用了这种方法。让我们看看程序。 代码 输出 Human-Readable DateTime: 2024-05-24 10:48:22 说明 'convertUnixToReadable' 函数在上面的 JS 代码片段中将 Unix 时间戳转换为人类可读的日期和时间格式。接下来,代码开始使用 'Date' 对象将 Unix 时间戳从秒转换为毫秒。然后,程序从 'Date' 对象中提取年、月、日、时、分和秒,并在需要时插入前导零,以确保每个元素都是两位数,然后将这些部分格式化为“YYYY-MM-DD HH:MM:SS”格式的字符串并返回。 使用 Python这是我们在其中实现纪元方法的完整 Python 代码。 代码 输出 Human-Readable DateTime Format: 2024-05-24 10:48:22 说明 在上面的 Python 代码中,首先计算给定 Unix 时间戳的所有天、小时、分钟和秒,然后从 1970 年开始重复计算以考虑超额。减去年份的天数,直到剩余的天数小于当前年份的天数。从剩余天数中减去每个月的天数,通过调整超额年份的帐户来计算月份和日期。最后,将计算出的年、月、日、时、分和秒格式化为易于阅读的字符串并打印为结果。 使用 Java这是我们在其中实现纪元方法的完整 Java 代码。 代码 输出 Human Readable DateTime: 2024-05-24 16:18:22 说明 提供的 Java 代码通过使用系统默认时间戳将 'Instant.ofEpochSecond' 定义为 'LocalDateTime' 对象来将 Unix 时间戳转换为人类可读的日期时间格式。然后,它使用 'DateTimeFormatter' 将此 'LocalDateTime' 对象转换为 yyyy-MM-dd HH:mm:ss 格式的人类可读字符串。最后,它打印一个日期时间字符串数组。 使用 C++这是我们在其中实现纪元方法的完整 C++ 代码。 代码 输出 Human Readable Date-Time: 2024-05-24 10:48:22 说明 在上面的代码中,首先定义时间戳并将其转换为 'std::chrono::system_clock::time_point'。然后,将此时间点转换为 'std::time_t' 以便与 'std::gmtime' 一起使用。它们被转换并使用 'std::put_time' 格式化为可读字符串,以指定 UTC 时间的日期和时间。 使用 C这是我们在其中实现纪元方法的完整 C 代码。 代码 输出 Human Readable Date-Time: 2024-05-24 10:48:22 说明 在上面的 C 代码中,定义时间戳并使用 'gmtime' 函数修改一个静态的 'struct tm' 来表示 UTC 时间,然后使用 'strftime' 获取 "YYYY-MM-DD HH:MM:SS" 格式的字符串。 使用 C#这是我们在其中实现纪元方法的完整 C# 代码。 代码 输出 Human Readable Date-Time: 2024-05-24 10:48:22 说明 在给定的 C# 代码中,定义一个时间戳并使用 'FromUnixTimeSeconds' 方法将其转换为 'DateTimeOffset',然后将此 'DateTimeOffset' 设置为具有 "yyyy-MM-dd HH:mm:ss" 格式的字符串。此外,代码还手动计算了 Unix 时间戳中的所有天、小时、分钟和秒,包括除以天和小时后剩余的小时和分钟。最后,它使用一个日期时间字符串列表,其中包含时间戳的详细分解,包括各个部分。 使用 PHP这是我们在其中实现纪元方法的完整 C# 代码。 代码 输出 Human Readable Date-Time: 2024-05-24 10:48:22 说明 在上面的 PHP 代码中,我们使用解释器将 Unix 时间戳转换为人类可读的日期时间格式。然后,它使用 'DateTime' 构造函数将其转换为 'DateTime' 对象,该对象使用 Unix 时间戳设置为 "@" 并覆盖默认值,然后使用 "Y-m-d H:i:s" 格式化此 'DateTime' 对象为字符串。 结论将 Linux/Unix 时间转换为人类可读的日期格式对于定义自 1970 年 1 月 1 日以来的秒数时间戳至关重要。此转换对于分析日志、查看文件类型和创建依赖于时间的、数据驱动的应用程序也是必需的。这确保了时间信息的可用性和有意义性,并促进了有效的调试、数据分析和通信。通过将 Unix 时间转换为标准的日期和时间格式,我们使数据对用户和程序更具意义和可操作性。 |
我们请求您订阅我们的新闻通讯以获取最新更新。