标签: year2038

时间(); 2038年后?

time();在2038年之后,php功能是否可以正常运行?

php time year2038

7
推荐指数
1
解决办法
1215
查看次数

JSON Web令牌和2038年错误

JSON Web令牌是一个相当新的标准(2015年5月),但是他们决定使用UNIX时间戳表示日期

这是否会使标准在各种实现中面临潜在的2038年问题?相反,选择ISO8601之类的东西似乎更适合未来。

为什么选择一个在另一个之上?

timestamp iso8601 year2038 jwt

5
推荐指数
1
解决办法
207
查看次数

如果 C++ 中的 sizeof(std::time_t) == sizeof(std::uint64_t) 是否保证 2038 安全?

摘自cppref

std::time_t32 位有符号整数的实现(许多历史实现)将在 2038 年失败。

但是,文档没有说明如何检测当前实现是否是 2038 安全的。所以,我的问题是:

如果在 C++ 中,是否保证 2038 安全 sizeof(std::time_t) == sizeof(std::uint64_t)

c++ time standards y2k year2038

5
推荐指数
1
解决办法
524
查看次数

如何在官方Windows Python 2.5上使用时间> 2038年

Windows上的官方Python 2.5是使用Visual Studio.Net 2003构建的,它使用32位time_t.因此,当年份> 2038年时,它只是例外.

虽然这在Python 2.6中已经修复(使用VS2008将time_t更改为64位),但我想使用2.5,因为已经为它编译了许多模块.

所以这是我的问题 - 是否有任何解决方案可以轻松让我的程序处理年份> 2038仍然使用官方Python 2.5?例如,一些预先制作的图书馆喜欢"time64"或"长期"等...

请不要告诉我升级到2.6+或忘记错误 - 我有理由需要让它工作,这就是我在这里发布问题的原因.

python time time-t python-2.5 year2038

4
推荐指数
3
解决办法
2269
查看次数

将大于maxint的时间戳转换为datetime对象

我有一些代码将一些存储为字符串的时间戳转换为datetime对象,并注意到今天转换日期时int时间戳值大于max int的异常.

datetime.datetime.fromtimestamp(2147570047)
Run Code Online (Sandbox Code Playgroud)

比如给我

ValueError: timestamp out of range for platform time_t
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?假设我想继续使用32位python(运行2.7.2)

我注意到我可以将max int转换为datetime对象,然后使用timedeltas添加任何额外的东西,但我想不出在实践中这样做的特别有效或好的方法.我可以将这些2038多个时间戳转换为datetime对象的好方法是什么?

python datetime year2038

4
推荐指数
1
解决办法
3795
查看次数

2037年后存储MySQL日期的正确方法

我试图在 MySQL 中存储一个date()字段,一个连续的日期到2037 年

例如: 2065-12-01

问题是该字段正在返回: 1969-12-31

在 DB 上记录这些值的正确方法是什么?我应该使用VARCHAR吗?

date像这样计算字段的值:

 $future_date = date('Y-m-d', strtotime("+$number_years_to_add years"));
Run Code Online (Sandbox Code Playgroud)

php mysql database datetime year2038

4
推荐指数
1
解决办法
1115
查看次数

日历时间存储为有符号的 32 位整数 - 何时会溢出

我正在 Unix 中进行高级编程的练习并遇到以下问题:

如果日历时间存储为有符号的 32 位整数,它会在哪一年溢出?

正符号整数 = 2147483647

在下面的计算中,我没有考虑闰年:

((((2147483647 / 60sec) /60min)/24)/365) = 68.1yrs
Run Code Online (Sandbox Code Playgroud)

这是一种幼稚的做法。我怎样才能专业地解决这个问题?

堆栈成员之前提出的以下解决方案对打印年份非常有帮助。

int epoch_time = INT_MAX;
struct tm * timeinfo;
time_t epoch_time_as_time_t = epoch_time;
timeinfo = localtime(&epoch_time_as_time_t);
printf("2] overflow date: %s", asctime(timeinfo));
Run Code Online (Sandbox Code Playgroud)

c unix time-t year2038

4
推荐指数
2
解决办法
1318
查看次数

32位红宝石1.9.2p290时间不能处理2038?

32位ruby 1.9.2p290(我必须使用),似乎很难在当前时间内添加25(但不是24!)年.

now = Time.now
more_time = (24*365*24*60*60)
puts "more_time.class = #{more_time.class}"
later = now + more_time

now = Time.now
more_time = (25*365*24*60*60)
puts "more_time.class = #{more_time.class}"
later = now + more_time
Run Code Online (Sandbox Code Playgroud)

生产:

more_time.class = Fixnum

more_time.class = Fixnum

ruby_time.rb:11:in'+':时间+ 788400000.000000超出ruby_time.rb的时间范围(RangeError):11

我遇到了2038年的问题吗?64位ruby 1.9.2-p290我没有这个问题.

ruby linux year2038

3
推荐指数
1
解决办法
204
查看次数

perl,int自1970年以来的秒数

使用旧版本的EPrints软件,我有这个函数 EPrints :: Time :: datestring_to_timet返回自1970年以来的整数秒

  ######################################################################               
  =pod                                                                                 

  =item $xhtml = EPrints::Time::datestring_to_timet( $handle, $datevalue )             

  Returns an interger number of seconds since 1970-01-01:00:00                         

  $datevalue - in the format YYYY-MM-DDTHH:MM:SSZ                                      

  =cut                                                                                 
  ######################################################################               

  sub datestring_to_timet                                                              
  {                                                                                    
          my( $session, $datevalue, $short ) = @_;                                     

          my( $year,$mon,$day,$hour,$min,$sec ) = split /[- :TZ]/, $datevalue;         

          my $t = timegm_nocheck $sec||0,$min||0,$hour,$day,$mon-1,$year-1900;         

          return $t;                                                                   
  }
Run Code Online (Sandbox Code Playgroud)

如果使用未来一年,我得到一个负数:

print EPrints::Time::datestring_to_timet(undef, "3017-9-20T12:00:00Z");
Run Code Online (Sandbox Code Playgroud)

结果:

-26895412800
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

perl year2038

3
推荐指数
1
解决办法
81
查看次数

为什么perl无法在2038年转换unix时间戳?

我试图使用下面的perl命令将纪元时间转换为可读的本地时间:

       bash-3.2$ perl -le print\ scalar\ localtime\ 32503651200
       Thu Mar  9 19:13:52 1911
Run Code Online (Sandbox Code Playgroud)

在2038年之后可以正确转换,但是对于年份数大于2038年我无法获得预期的结果.

请告知如何解决.谢谢.

perl year2038

3
推荐指数
1
解决办法
283
查看次数

标签 统计

year2038 ×10

time ×3

datetime ×2

perl ×2

php ×2

python ×2

time-t ×2

c ×1

c++ ×1

database ×1

iso8601 ×1

jwt ×1

linux ×1

mysql ×1

python-2.5 ×1

ruby ×1

standards ×1

timestamp ×1

unix ×1

y2k ×1