Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
toEpochMilli的Java字符串DateTime-不同区域_Java_Timezone_Epoch_Region_Datetime Conversion - Fatal编程技术网

toEpochMilli的Java字符串DateTime-不同区域

toEpochMilli的Java字符串DateTime-不同区域,java,timezone,epoch,region,datetime-conversion,Java,Timezone,Epoch,Region,Datetime Conversion,我正在为toEpochMilli开发一种字符串转换方法。但是,当我在不同的时区服务器上发布代码时,得到的结果不同。如何解决 //input = "2019-12-26T00:00:00" private static Long converter(String stringDate) { try { LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeForma

我正在为toEpochMilli开发一种字符串转换方法。但是,当我在不同的时区服务器上发布代码时,得到的结果不同。如何解决

    //input = "2019-12-26T00:00:00"

    private static Long converter(String stringDate) {
        try {
            LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
            ZoneId zoneId = ZoneId.of("America/Sao_Paulo");
            return dateTime.atZone(zoneId).toInstant().toEpochMilli();
        } catch (DateTimeParseException dte) {
            throw new DateException("Invalid input format", dte);
        }
    }
圣保罗输出转换为LocalDateTime的结果与输入相同,但北弗吉尼亚输出转换为LocalDateTime的结果与输入不同

public static String backConverter(Long epochMilli) {
    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.of("America/Sao_Paulo"));
    return DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss").format(localDateTime);
}

此解决方案在不同的地方工作,具有相同的输出

//input = "2019-12-26T00:00:00"

private static Long converter(String stringDate) {
    try {
        LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
        ZoneId zoneId = ZoneId.systemDefault();
        return dateTime.atZone(zoneId).toInstant().toEpochMilli();
    } catch (DateTimeParseException dte) {
        throw new DateException("Invalid input format", dte);
    }
}

public static String backConverter(Long epochMilli) {
    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
    return DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss").format(localDateTime);
}

你能告诉我们你在哪里把这么长的代码转换回LocalDateTime吗?你用哪个时区来做这个?你能显示你得到的输出吗?对我来说,在圣保罗运行时,您的代码运行良好=2019-12-26T00:00:00两个时区的输入是否相同@phdias我相信你的输入在不同的时间区域发生了变化,我无法复制。我在美国/纽约时区的JVM上调用了converter,然后调用了backConverter,我认为弗吉尼亚州属于这个时区。我得到2019-12-26T00:00:00。我还尝试修改了两种方法以使用该时区。还是一样的结果,请