问题标签 [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.
symfony - 当年与教义
我试图在 Doctrine 2 的 where 条件下的查询构建器中使用当前年份,但这是不可能的。用 My SQL 没问题,但用 Doctrine 无事可做,它不起作用。那么有人可以帮我解决这个问题吗?
我试过(一个一个):
感谢提前
c++ - time_t 提高日期转换给出不正确的结果
我有一组 unix 时间戳,我正在转换为 boost (1.65.1) 日期,但是当它们在未来变得太远时,转换似乎会崩溃。2040 年及以后的任何事情似乎都以某种方式回到 1900 年后。
鉴于以下代码...
...我得到以下输出...
...但是我期待以下输出...
我在这里做错了什么吗?
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'
php - PHP 7 64 位中的触摸函数不处理超过 2038 的日期
在 PHP 7.2.14 64-bit上,在 Windows 上,touch()
无法将文件的日期设置为 2038 年之后的日期。 filemtime()
将读取此类文件的日期(日期是使用外部工具设置的)。
这是预期的行为吗?
是否可以编写代码以 Y2038 友好的方式更改文件的日期?
问题似乎不在 PHP 错误跟踪中:搜索“2038”
代码示例:
输出:
如果我手动将同一文件的日期设置为 2040,则以下内容按预期工作:
输出:
c - 如何在 32 位时间库中使用 mktime64()、time64() 和 localtime64() 函数?
如何mktime64()
在 Linux 中使用 32 位时间库来避免 2038 年问题?
我们尝试使用宏_Time64
但失败了,因为编译器仍然抛出未定义的mktime64()
错误:
main.c:(.text+0x68): undefined reference to `_mktime64'
您能帮我如何使用 32 位库中的mktime64
,time64
和函数吗?localtime64
date - 如何在颤振中添加年份范围验证
我尝试添加年份范围验证,它必须在 1850 年到当前年份之间。我试过了,但它不工作。
这是我尝试过的代码
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 年及以后)会出现任何问题?
它们是我们应该避免的任何危险方法吗?
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 位?真的吗?我可以放心地期待这个吗?
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
。
linux - systemd 在clock_gettime 中止
在 5.4 内核或更高版本的 32 位 CPU 上引导 systemd 时,systemd 中止:
为什么?