How to convert time in YYYY-MM-DDTHH:mm:ss.SSSZ format to default timezone?
本问题已经有最佳答案,请猛点这里访问。
我得到的时间格式为"2011-07-31T08:16:37.733Z"。 实际上Z应该是时区,然后该时间转换为本地时区。 我现在如何实际将此时间转换为默认时区。
RFC 3339描述了用于日期/时间表示的特定ISO 8601"配置文件"。
如果使用第三方开源库是一种选择,请查看Joda-Time的
否则,如果您需要推出自己的代码,则使用
如果你需要解析的只是'Z'(Zulu或UTC),那么它相对简单:
1 2 3 4 5 6 7 | String input ="2011-08-11T01:23:45.678Z"; TimeZone utc = TimeZone.getTimeZone("UTC"); SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); f.setTimeZone(utc); GregorianCalendar cal = new GregorianCalendar(utc); cal.setTime(f.parse(input)); System.out.println(cal.getTime()); |
应在您当地的时区打印出"2011-08-11T01:23:45.678Z"。
如果您需要在RFC 3339中处理任意时区,那么您需要扩展上述内容以解析时区指示符并检索相应的Java
1 2 3 4 | private static SimpleDateFormat DATE_TIME_FORMAT=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); DATE_TIME_FORMAT.setTimeZone(TimeZone.getID()); //for example date=DATE_TIME_FORMAT.format(curDate); |