为什么java date不可解析?

时间:2015-06-16 04:34:15

标签: java hybrid-mobile-app oracle-maf

我正在使用oracle MAF开发移动应用程序。 Oracle MAF提供其日期组件,如果我选择日期,则输出类似于:2015-06-16T04:35:00.000Z,用于选定日期Jun 16, 2015 10:05 AM

我正在尝试将此格式转换为"印度标准时间"与.ical(ICalendar日期格式)对于所选日期20150613T100500应该类似于Jun 16, 2015 10:05 AM。我正在使用以下代码:

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String start_date_time = isoFormat.parse("20150616T043500000Z").toString();

但它将日期时间返回为:

Tue Jun 16 04:35:00 GMT+5:30 2015

应该是这样的:

20150616T100500

3 个答案:

答案 0 :(得分:1)

您需要将UserTypes UTC的值解析为 public class User { public int id { get; set; } // Other properties representing table columns here public UserStatus UserStatus { get; set; } public UserType UserType { get; set; } } public class UserStatus { public int Id { get; set; } public string Description { get; set; } }

2015-06-16T04:35:00.000Z

这给了我们java.util.Date SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); from.setTimeZone(TimeZone.getTimeZone("UTC")); Date start_date_time = from.parse("2015-06-16T04:35:00.000Z"); (对我来说)。

然后,您需要在IST格式化此内容

java.util.Date

哪个输出Tue Jun 16 14:35:00 EST 2015

Java 8 Time API

仅仅因为这是一种很好的做法......

SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
outFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String formatted = outFormat.format(start_date_time);
System.out.println(formatted);

nb:如果我没有将值解析为20150616T100500,那么将其转换为 // No Time Zone String from = "2015-06-16T04:35:00.000Z"; LocalDateTime ldt = LocalDateTime.parse(from, DateTimeFormatter.ISO_ZONED_DATE_TIME); // Convert it to UTC ZonedDateTime zdtUTC = ZonedDateTime.of(ldt, ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC")); // Convert it to IST ZonedDateTime zdtITC = zdtUTC.withZoneSameInstant(ZoneId.of("Indian/Cocos")); String timestamp = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss").format(zdtITC); System.out.println(timestamp); ,我已经退出一小时了,但我愿意知道更好的方法

答案 1 :(得分:0)

供应格式应为"yyyy-MM-dd'T'HH:mm:ss"

public static void main(String[] args) {
    SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
    try {
        Date start_date_time = isoFormat.parse("2015-06-16T04:35:00.000Z");
        System.out.println(start_date_time);
        SimpleDateFormat output = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
        String formattedTime = output.format(start_date_time);
        System.out.println(formattedTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

<强>输出

Tue Jun 16 04:35:00 IST 2015
20150616T043500

答案 2 :(得分:0)

格式的一些补充,以及日期字符串中的正确TZ:

css styles