Java SimpleDataFormat解析正在根据时区更改时间
我在流中以字符串形式获取时间戳,它们的格式为Java SimpleDataFormat解析正在根据时区更改时间,java,datetime,timestamp,Java,Datetime,Timestamp,我在流中以字符串形式获取时间戳,它们的格式为“2016-12-08 05:44:48”和“2016-12-08 05:44:48” 我想将字符串转换为java.sql.Timestamp,因此我编写了如下函数 private static Timestamp convertToTimestamp(String s) throws ParseException{ String dateFormat = new String("yyyy-MM-dd hh:mm:ss z"); Sim
“2016-12-08 05:44:48”
和“2016-12-08 05:44:48”
我想将字符串转换为java.sql.Timestamp,因此我编写了如下函数
private static Timestamp convertToTimestamp(String s) throws ParseException{
String dateFormat = new String("yyyy-MM-dd hh:mm:ss z");
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
Date d = sdf.parse(s);
return new Timestamp(d.getTime());
}
当我跑的时候
Timestamp t = convertToTimestamp("2016-12-08 05:44:48 UTC");
System.out.println(t);
输出为2016-12-08 11:14:48.0
它会自动转换为IST(可能是我的JVM默认值)。
如何进行更改以使输出时间不更改为IST且与输入时间相同?解析日期时必须忽略时区
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Java的,不存储时区
他们总是以UTC来跟踪时间
解析包含时区的日期字符串时,将正确解析该字符串,并将其从给定时区调整为UTC
在解析不带时区的日期字符串时,该字符串将在JVM的默认时区中解析并转换为UTC,除非另一个时区已明确指定给日期解析器(通常)
除非另有规定,否则当显示(也称为格式化)一个日期
/时间戳
时,它将显示在JVM的默认时区中
日期
/时间戳
对象无法存储时区,因此它们无法记住原始时区是什么
如果需要,请使用Java8的ZoneDateTime