将GMT时间转换为特定的字符串格式
我有特定的情况,我必须将日期字段转换为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);
但是我当然得到异常,因为字符串不能像这样转换,但我需要类似的东西。
合并的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 ...
这不工作:线程“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。
这与我的代码一样也是一样的例外 – Dejan
老实说,我只是复制了你的原始模式,没有看起来没有工作。由@RobinTopper纠正... –
你*有*使用旧的日期/时间API? java.time包很多,更好。除此之外,还不清楚你得到什么异常或在哪里... –
嗨我在这条线上得到异常:SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); (Unknown Source) \t at java.text.SimpleDateFormat.initialize(Unknown Source) – Dejan
Right,你有没有调查过?基本上你的模式已经坏了 - 你需要引用'T'和'Z'。 –