问题标签 [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.
ruby - 32 位 ruby 1.9.2p290 时间无法处理 2038?
32 位 ruby 1.9.2p290(我必须使用)似乎很难将当前时间增加 25(但不是 24!)年。
产生:
more_time.class = Fixnum
more_time.class = Fixnum
ruby_time.rb:11:in `+': time + 788400000.000000 out of Time range (RangeError) from ruby_time.rb:11
我遇到了 2038 年的问题吗?我对 64 位 ruby 1.9.2-p290 没有这个问题。
mysql - 为什么我们不使用完整的 32 位来存储 Epoch 以来的 136 年?
我已经看过很多次了,例如在 UNIX 上,在MySQL 时间戳等中:Epoch 从 1970-1-1 开始,但可记录的最大年份是 2038。现在让我数一数:
因此,如果我们使用完整的 32 位,我们自然会毫无问题地到达 2106 年。但显然 2038 年仅对应 31 位。那么为什么我们要扔掉一点呢?通过使用完整的 32 位,我们可以希望我们不必解决这个问题,因为我们可能会首先摧毁地球......
对评论的反应:当然是因为它已经签名了,但是为什么时间戳必须被签名呢?这就是这个问题的重点。
rfc - 如何应对 RFC 过时的风险?
RFC 4880是描述 OpenPGP 加密标准的文档,其根源在于1998年发布的RFC 2440(那是16 年前,据说在 64 位系统出现之前)。两种规范都说明了如何处理时间戳:
3.5 . 时间字段
时间字段是一个无符号的四字节数字,包含自 UTC 1970 年 1 月 1 日午夜以来经过的秒数。
是否应该尝试尽可能地遵循 RFC (并且,在这里,有一天会面临一个甜蜜的2038 年错误)?开发人员不遵循部分标准/规范/RFC(尤其是在密码学方面)是否“有风险”,因为它们已经被视为可能已经过时了?
我有点害怕问,因为这个问题听起来很傻,但是如果我以我自己的方式“实现 RFC 4880”,那它就不再是官方的事情了。那么,针对她认为“过时”的规范部分,开发人员应该做的最好的事情是什么?没有什么?
perl - perl, int 自 1970 年以来的秒数
使用旧版本的EPrints软件,我使用此函数 EPrints::Time::datestring_to_timet返回自 1970 年以来的整数秒数
如果在未来一年使用,我得到一个负数:
结果:
这里有什么问题?
php - PHP mktime 在 64 位系统上不返回大整数值
在尝试使 2038 年的 unix_timestamps 更大时,我遇到了 PHP 函数mktime的问题。我有 64 位操作系统。
服务器上的 PHP 版本:
php -v
提供 PHP 5.1.6 (cli)(构建时间:2010 年 11 月 29 日 16:47:46)
php -r 'echo PHP_INT_MAX;'
给 9223372036854775807
但
php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );'
给出布尔(假)
在开发服务器上
php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );'
给出 int(4078677600)
这个 PHP 函数在 64 位系统上无法正常工作的原因可能是什么?strtotime也不适用于年份大于 2038 的日期
php - PHP date() 因 32 位的高时间戳而失败
我偶然发现了这个问题:
期望和正确的结果(在本地主机上):
2114 年 9 月 30 日星期日 10:31:58 +0100
结果不正确(远程):
1978 年 8 月 24 日星期四 04:03:42 +0100
在 32 位平台上运行脚本时会得到错误的结果。我认为这是著名的 Y2038 问题,但我应该如何解决它?
如果我回显时间戳(当存储在变量中时),它显示正常,但date()
会破坏它(我假设转换为 int32)。
4567743118
[如果相关,它是来自 debian repos 的 PHP 5.4.4]
php - PHP如何本地化2038年之后的日期
我尝试使用 2038 年之后的本地化日期和 php
strftime 使用时间戳,所以它在 2038 年之后不起作用
DateTime 未本地化...
所以我尝试将 IntlDateFormatter 与 DateTime 一起使用:
我在这里得到: datefmt_format:无法获取时间戳:U_ILLEGAL_ARGUMENT_ERROR
其实我猜 IntlDateFormatter 在内部将日期转换为时间戳......
那么我如何在 php 中本地化超过 2038 的日期?
linux - Linux 内核中的 64 位 time_t
我已经编译了内核 3.19.1,但time_t
. 只是一个简单的程序,cout << sizeof (time_t);
大小为 4 个字节,而不是我的意图是 8 个字节。
我应该在 make menuconfig 期间打开特定选项吗?
android - Google Calendar API(Android 应用程序)中的“2038 年_问题”
我正在构建一个 Android 应用程序,该应用程序使用户能够将事件插入 Google 日历和外部日历(如 Exchange 帐户)。
问题在于,如果用户想要在 2038 年之后添加事件,它会在过去创建事件(例如 - 2038 年 1 月变为 1901 年 12 月,2038 年 7 月 4 日变为 1902 年 5 月 28 日)。我做了一些研究,发现问题是“ 2038 年问题”。
2038 年问题是计算和数据存储情况的问题,其中时间值被存储或计算为有符号的 32 位整数,该数字被解释为自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数. 这样的实现不能对 2038 年 1 月 19 日 03:14:07 UTC 之后的时间进行编码。
可以用 Unix 有符号 32 位整数时间格式表示的最晚时间是 2038 年 1 月 19 日星期二 03:14:07 UTC(1970 年 1 月 1 日之后的 2,147,483,647 秒)。超出此时间的时间将“环绕”并在内部存储为负数,这些系统会将其解释为发生在 1901 年 12 月 13 日而不是 2038 年 1 月 19 日。这是由整数溢出引起的。
似乎我的 Java 代码工作正常,我得到的毫秒数还可以,但是当我将值发送到 Google APIinsert
函数时 - 我认为它不知道如何处理它,然后它在错误的日期插入事件( 1901 年及以上)。有什么办法可以处理吗?
这是我的代码:
这是关于插入事件的 Google 文档:http: //developer.android.com/guide/topics/providers/calendar-provider.html#add-event
time - 面对计算机中的定时炸弹?
它是关于时间的表示,使用 anint
存储自 1970 年 1 月 1 日以来的秒数。
使用这种表示的程序何时会面临定时炸弹?发生这种情况时应该如何进行?