为什么这段代码会给我一个39k年后的约会?

Oma*_*eji 1 java datetime

我写了一个返回字符串格式化日期的毫秒值的方法,由于某种原因,它给了我将来39000年的日期.任何想法为什么?

private long getTimeInMs(String currentStartTimeString) {
        //String newDateString = currentStartTimeString.substring(6,10)+"-"+currentStartTimeString.substring(3, 5)+"-"+currentStartTimeString.substring(0, 2)+ "T" + currentStartTimeString.substring(11);
        String newDateString = currentStartTimeString.substring(0,19);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        long timeInMs;
        try {
            timeInMs = df.parse(newDateString).getTime();
        } catch (ParseException e) {
            log.error("Failed to parse current Start Time",e);
            return 0;
        }
        return timeInMs;
    }
Run Code Online (Sandbox Code Playgroud)

如果我输入日期字符串"2009-07-07 10:51:01.15",则返回1246960261000,实际上是星期三06月06日41484 11:16:40 GMT + 0100(GMT日光时间)

好吧,我认为问题在于它是否已经超越了Java epoc并且我正在针对unix时代进行评估......

Pau*_*lin 17

我猜你是从getTime()解释返回的值,好像它是一个Unix time_t值.它不是 - 它超过了Java时代的毫秒,而不是超过Unix时代的秒数.