Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
在java中,相同的毫秒用于两个不同的时间_Java_Simpledateformat - Fatal编程技术网

在java中,相同的毫秒用于两个不同的时间

在java中,相同的毫秒用于两个不同的时间,java,simpledateformat,Java,Simpledateformat,我需要将给定字符串的24小时日期格式转换为毫秒。但是00:10:00和12:10:00的毫秒数是一样的。这是我的代码示例;请帮助我 DateFormat formate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); formate.parse("2013-10-31 12:10:00").getTime(); // return 1383158400000 formate.parse("2013-10-31 00:10:00").getTi

我需要将给定字符串的24小时日期格式转换为毫秒。但是00:10:00和12:10:00的毫秒数是一样的。这是我的代码示例;请帮助我

DateFormat formate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

formate.parse("2013-10-31 12:10:00").getTime(); //  return 1383158400000

formate.parse("2013-10-31 00:10:00").getTime();  // return 1383158400000

我使用的是24小时格式,但我在两个不同的时间得到相同的结果。错在哪里?请帮我找出问题。

您使用的是12小时
hh
格式;使用24小时
HH
(大写)格式

每天小时数(0-23)0

小时,上午/下午(1-12)12号

java.time 如果没有AM/PM标记,日期-时间解析器将考虑符号为
H
的24小时格式的小时,而不是
H

更改此选项将解决您的问题,但传统的日期时间API(
java.util
date-time类型及其格式化API,
SimpleDateFormat
)已过时且容易出错。建议完全停止使用它们,并切换到
java.time
,即*

使用现代日期时间API的演示:

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String args[]) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH).withZone(ZoneOffset.UTC);
        System.out.println(Instant.from(dtf.parse("2013-10-31 12:10:00")).toEpochMilli());
        System.out.println(Instant.from(dtf.parse("2013-10-31 00:10:00")).toEpochMilli());
    }
}
1383221400000
1383178200000
输出:

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String args[]) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH).withZone(ZoneOffset.UTC);
        System.out.println(Instant.from(dtf.parse("2013-10-31 12:10:00")).toEpochMilli());
        System.out.println(Instant.from(dtf.parse("2013-10-31 00:10:00")).toEpochMilli());
    }
}
1383221400000
1383178200000
了解有关*的更多信息


*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

您的意思是使用
HH
而不是
HH