Java字符串更改日期时区

时间:2019-07-05 06:16:07

标签: java

我需要在下面的给定代码中将 IST更改为GMT

import java.text.SimpleDateFormat;  
import java.util.Date;  
public class StringToDateExample1 {  
    public static void main(String[] args)throws Exception {  
      String sDate1="31/12/1998";  
      Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);  
      System.out.println(sDate1+"\t"+date1);  
    }  
}  

输出:1998年12月31日,星期四IST 1998年12月31日00:00:00

我需要格林尼治标准时间,请帮忙!

3 个答案:

答案 0 :(得分:0)

您必须以“ T”日期格式添加时区:

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sDate1+"\t"+isoFormat.parse("2010-05-23T09:01:02"));

答案 1 :(得分:0)

您使用的是可怕的日期时间类,而这些类早已被JSR 310中定义的现代 java.time 类取代了。

将输入字符串解析为LocalDate

String input = "31/12/1998" ; 
DateTimeFormatter f =  DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

您显然想用UTC表示当天的第一时刻。

OffsetDateTime odt = OffsetDateTime.of( ld , LocalTime.MIN ,  ZoneOffset.UTC ) ;

要生成自定义格式的字符串,请使用DateTimeFormatter类。堆栈溢出已经对此进行了很多次讨论,我将不介绍该部分。

答案 2 :(得分:0)

此代码:

String sDate1 = "31/12/1998";
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
dateformat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sDate1 + "\t" + dateformat.parse(sDate1));

输出:

31/12/1998  Thu Dec 31 05:30:00 IST 1998