问题标签 [year2038]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
562 浏览

symfony - 当年与教义

我试图在 Doctrine 2 的 where 条件下的查询构建器中使用当前年份,但这是不可能的。用 My SQL 没问题,但用 Doctrine 无事可做,它不起作用。那么有人可以帮我解决这个问题吗?

我试过(一个一个):

感谢提前

0 投票
3 回答
688 浏览

c++ - time_t 提高日期转换给出不正确的结果

我有一组 unix 时间戳,我正在转换为 boost (1.65.1) 日期,但是当它们在未来变得太远时,转换似乎会崩溃。2040 年及以后的任何事情似乎都以某种方式回到 1900 年后。

鉴于以下代码...

...我得到以下输出...

...但是我期待以下输出...

我在这里做错了什么吗?

0 投票
1 回答
141 浏览

java - 如何使这个 2038 年问题的 junit 测试按预期工作

我正在编写一些代码,这些代码将在 2038 年 1 月 19 日之后停止工作,因为java 溢出时的Year_2038_problemDate所以我想我可以创建一个在 2036 年开始失败的 junit 测试,给我 2 年的时间来修复它。

为了首先创建一个失败的测试,我添加了 25 年,并且对测试没有失败感到惊讶。

任何线索为什么这不会失败?

我正在使用带有 java-1.8.0_152(64 位)的 Android-Studio-3.4.1 和 'junit:junit:4.12' 和 'androidx.test:runner:1.1.0'

0 投票
2 回答
100 浏览

php - PHP 7 64 位中的触摸函数不处理超过 2038 的日期

在 PHP 7.2.14 64-bit上,在 Windows 上,touch()无法将文件的日期设置为 2038 年之后的日期。 filemtime()将读取此类文件的日期(日期是使用外部工具设置的)。

这是预期的行为吗?
是否可以编写代码以 Y2038 友好的方式更改文件的日期?
问题似乎不在 PHP 错误跟踪中:搜索“2038”

代码示例:

输出:

如果我手动将同一文件的日期设置为 2040,则以下内容按预期工作:

输出:

0 投票
2 回答
905 浏览

c - 如何在 32 位时间库中使用 mktime64()、time64() 和 localtime64() 函数?

如何mktime64()在 Linux 中使用 32 位时间库来避免 2038 年问题?

我们尝试使用宏_Time64但失败了,因为编译器仍然抛出未定义的mktime64()错误:

main.c:(.text+0x68): undefined reference to `_mktime64'

您能帮我如何使用 32 位库中的mktime64,time64和函数吗?localtime64

0 投票
1 回答
226 浏览

date - 如何在颤振中添加年份范围验证

我尝试添加年份范围验证,它必须在 1850 年到当前年份之间。我试过了,但它不工作。

这是我尝试过的代码

0 投票
1 回答
304 浏览

java - 是否在 2038 年后保存以使用 System.currentTimeMillis()?

2038 年问题(也称为 Y2038 或 Unix Y2K)涉及将许多数字系统中的时间表示为自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数,并将其存储为带符号的 32 位整数。这样的实现不能对 2038 年 1 月 19 日 03:14:07 UTC 之后的时间进行编码。就像 Y2K 问题一样,2038 年问题是由所选数据类型的容量不足引起的。

(来源维基百科)

我试图搜索这对 Android 及其应用程序有何影响。但是我没有找到任何明确的答案。因此,我想在这里问:

如果我们的程序将使用 System.currentTimeMillis() 方法,我们能否预计未来(2038 年及以后)会出现任何问题?

它们是我们应该避免的任何危险方法吗?

0 投票
0 回答
54 浏览

unix-timestamp - 如何在 2038 年防止(如果可能)“sizeof(time_t)==4”机器(例如嵌入式)发生灾难?

Stackoverflow 中有一些(关闭!)关于它的对话。

其中一些建议“使用 std::chrono”。

据我所知,std::chrono 不能成为解决方案,因为 std::chrono::system_clock 仍然依赖于 std::time_t。我必须使用“to_time_t”,结果(引自 cppreference.com)“如果 std::time_t 的精度较低,则该值是舍入还是截断是实现定义的。”

所以我不能使用 std::chrono。并且(可能)不能使用clock_gettime()。有什么我可以用的吗?为了获得“现在是什么时间”,在 32 位环境中存储和检索一些时间戳,最好是紧凑的大小。目前我们有(嵌入式)32 位处理器,并且可能会保留(至少在当前设备中)。

临近 2038 年,所有 32 位(嵌入式)处理器都会跳到 64 位?真的吗?我可以放心地期待这个吗?

0 投票
1 回答
292 浏览

filesystems - ext2/3/4 文件系统如何处理 64 位 time_t?

我正在研究小型 ext2 文件系统映像操作工具(例如列出目录、添加和提取文件而无需挂载它)。我刚刚遇到了 Unix 时间戳字段的问题。它们在 ext 文件系统中都是 32 位的。众所周知,32 位 Unix 时间戳在 2038 年后将不再起作用。大多数软件只需将 time_t 的定义更改为 64 位即可轻松解决此问题。但是对于文件系统来说并不是那么容易。它们需要与现有实现兼容,但需要不时更新。ext 文件系统究竟是如何做到这一点的?特别是s_mtime, s_wtime, s_lastcheck, i_atime, i_ctime,i_mtime和等字段i_dtime

0 投票
1 回答
1025 浏览

linux - systemd 在clock_gettime 中止

在 5.4 内核或更高版本的 32 位 CPU 上引导 systemd 时,systemd 中止:

为什么?