2017-08-07 125 views
-2

我有特定的情况,我必须将日期字段转换为GMT时间,然后将其转换为特定的字符串格式。将GMT时间转换为特定的字符串格式

这给GMT时间:

public static void main(String[] args) {   
    Date rightNow = Calendar.getInstance().getTime(); 
    DateFormat gmtFormat = new SimpleDateFormat(); 
    TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
    gmtFormat.setTimeZone(gmtTime); 
    System.out.println("GMT Time: " + gmtFormat.format(rightNow)); 
    String gmtDate=gmtFormat.format(rightNow); 
} 

现在我需要的是GMT时间转换为字符串格式yyyy-MM-ddTHH:mm:ssZ 在我的时区实例当前时间是17:10:00,在GMT 15:10:00所以这意味着最终的输出应2017-08-07T15:10:00Z

我尝试这样的代码来添加:

String pattern = "yyyy-MM-ddTHH:mm:ssZ"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); 
String date = simpleDateFormat.format(gmtDate); 
System.out.println(date); 

但是我当然得到异常,因为字符串不能像这样转换,但我需要类似的东西。

+1

你*有*使用旧的日期/时间API? java.time包很多,更好。除此之外,还不清楚你得到什么异常或在哪里... –

+0

嗨我在这条线上得到异常:SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); (Unknown Source) \t at java.text.SimpleDateFormat.initialize(Unknown Source) – Dejan

+2

Right,你有没有调查过?基本上你的模式已经坏了 - 你需要引用'T'和'Z'。 –

回答

-1

合并的2个代码块一起:

public static void main(String[] args) {   
    Date rightNow = Calendar.getInstance().getTime(); 
    String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; 
    DateFormat gmtFormat = new SimpleDateFormat(pattern); 
    TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
    gmtFormat.setTimeZone(gmtTime); 
    System.out.println("GMT Time: " + gmtFormat.format(rightNow)); 
} 

或者"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"按照JavaDoc ...

+0

这不工作:线程“main”中的异常java.lang.IllegalArgumentException:非法模式字符'T' \t at java.text.SimpleDateFormat.compile(Unknown Source) \t at java.text.SimpleDateFormat.initialize(Unknown源) \t at java.text.SimpleDateFormat。 (未知来源) \t at java.text.SimpleDateFormat。 (未知来源) \t at ibis.test.EricssonDate.main(EricssonDate.java:34) – Dejan

+0

这与我的代码一样也是一样的例外 – Dejan

+0

老实说,我只是复制了你的原始模式,没有看起来没有工作。由@RobinTopper纠正... –

相关问题