相关疑难解决方法(0)

System.currentTimeMillis()何时溢出?

我有一个网络应用程序,使用时间戳订购东西,这只是一个很长的时间.我的网络应用程序后端恰好用java编写,所以我使用:

long timestamp = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

哪一年(大约)会失败?我的意思是在某种程度上,长期的范围会溢出,对吧?我们都可能早已死,但我只是好奇.会不会再像y2k一样?我该怎么做才能做好准备?荒谬,我知道,只是好奇!

谢谢

java

50
推荐指数
6
解决办法
1万
查看次数

2038-1-19之后会发生什么?

从纪元时间开始

1970年1月1日00:00:00

并计算到一个32位有符号整数可以达到的极限,当我们达到计数时间的极限时(当然在计算机中)是2038-1-19,如Matt Howells 的答案所示.

使用1970-1-1作为其时代的32位有符号整数可以表示高达2038-1-19的日期,在该日期它将包围到1901-12-13

如果它回绕到一个回溯日期,那么什么是计算时间而不是回到日期的解决方案呢?正如维基百科所述

2038年问题没有通用的解决方案.

我对此感到不舒服!必须考虑到解决这个问题的方法.我理解首先不使用64位整数的原因(这将给我们2920亿年的时间放松!):没有多少机器可以(可以任何?)处理64位整数.切换到64位整数现在有其自身的问题.那可能是什么解决方案呢?

integer epoch

9
推荐指数
0
解决办法
592
查看次数

Java:最小和最大日期范围

我从具有存储日期值的数据库中获取一些数据,并且我让用户选择他们想要查看数据的日期范围.我获取这些日期范围的所有代码都有效,除了获取所有时间的日期范围的方法,这是最早可能的数据Java句柄的起始值,以及最大可能日期的结束值.

我的代码有问题,因为我看不出问题:

public static DateRange getAllTime() {
        /**
         * Get earliest possible
         */
        Calendar c = Calendar.getInstance();
        c.set(
                c.getActualMinimum(Calendar.YEAR), 
                c.getActualMinimum(Calendar.MONTH), 
                c.getActualMinimum(Calendar.DAY_OF_MONTH), 
                c.getActualMinimum(Calendar.HOUR), 
                c.getActualMinimum(Calendar.MINUTE), 
                c.getActualMinimum(Calendar.SECOND)
            );

        c.set(Calendar.MILLISECOND, c.getActualMinimum(Calendar.MILLISECOND));
        Date start = c.getTime();

        /**
         * Get latest possible date
         */
        c.set(
                c.getActualMaximum(Calendar.YEAR), 
                c.getActualMaximum(Calendar.MONTH), 
                c.getActualMaximum(Calendar.DAY_OF_MONTH), 
                c.getActualMaximum(Calendar.HOUR), 
                c.getActualMaximum(Calendar.MINUTE), 
                c.getActualMaximum(Calendar.SECOND)
            );

        c.set(Calendar.MILLISECOND, c.getActualMaximum(Calendar.MILLISECOND));
        Date end = c.getTime();

        DateRange range = new DateRange();
        range.Start = start;
        range.End = end;

        return range;
    }
Run Code Online (Sandbox Code Playgroud)

java date

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

java.sql.Timestamp 可以处理的最大年份是多少?

我正在尝试使用以下内容在我的程序中创建最大日期:

import java.util.Date;
import java.sql.Timestamp;

Date maxDate = new Date(Long.MAX_VALUE);
...
Timestamp ts = new Timestamp(maxDate.getTime());
Run Code Online (Sandbox Code Playgroud)

如果我是正确的maxDate.getTime();返回值,Long.MAX_VALUE所以它并不重要,我可以简单地写new Timestamp(Long.MAX_VALUE);我对吗?

我的问题是我的程序此时给出了以下异常:

java.sql.SQLException: 年份超出范围。

那么可以传递给 Timestamp 的最大 long 值是多少?或者还有什么我在这里想念的吗?

如果重要的话,我正在使用 Oracle 数据库。

提前致谢!

java sql oracle timestamp date

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

标签 统计

java ×3

date ×2

epoch ×1

integer ×1

oracle ×1

sql ×1

timestamp ×1