Java 将GMT时间转换为特定字符串格式

Java 将GMT时间转换为特定字符串格式,java,date,datetime,gmt,Java,Date,Datetime,Gmt,我有一个特殊的例子,我必须把日期字段转换成GMT时间,然后再转换成特定的字符串格式 这给了格林尼治标准时间: public static void main(String[] args) { Date rightNow = Calendar.getInstance().getTime(); DateFormat gmtFormat = new SimpleDateFormat(); TimeZone gmtTime = TimeZone.getTimeZo

我有一个特殊的例子,我必须把日期字段转换成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);

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

将两个代码块合并在一起:

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”
根据…

您必须使用旧的日期/时间API吗?time包非常非常好。除此之外,还不清楚您得到了什么异常或在哪里……嗨,我在这一行得到了异常:SimpleDateFormat SimpleDateFormat=newsimpledateformat(模式);线程“main”java.lang.IllegalArgumentException中的此异常:java.text.SimpleDataFormat.compile(未知源代码)处的非法模式字符“T”位于java.text.SimpleDataFormat.initialize(未知源代码)处,对吗?您对此进行了调查吗?基本上,您的模式被破坏了-您需要引用
T
Z
。副本中完整的工作示例所示的正确模式是
公共静态最终字符串ISO_8601_24H_FULL_FORMAT=“yyyy-MM-dd'T'HH:MM:ss.SSSXXX”根据。不要像其他人建议的那样在末尾硬编码
Z
。这不起作用:线程“main”java.lang.IllegalArgumentException中的异常:java.text.simpleDataFormat.compile中的非法模式字符“T”位于java.text.simpleDataFormat.initialize(未知源代码)位于java.text.simpleDataFormat.(未知源代码)在java.text.SimpleDataFormat.(未知源代码)的ibis.test.EricssonDate.main(EricssonDate.java:34)中,这与我在代码中得到的异常情况完全相同。老实说,我只是复制了您的原始模式,看起来它没有工作。由@RobinTopper更正…不,他们的编辑也不正确