2017-02-17 243 views
1

我正在开发一个java样本,其中日期是字符串,如 - 2016-07-19T16:54:03.000 + 05:30。 我想将其转换为DateTime对象。如何在java中执行此操作? 我曾尝试这个代码 -从字符串获取DateTime

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS+Z").parseDateTime("2016-07-19T16:54:03.000+05:30") 

它给java.lang.IllegalArgumentException异常:无效的格式: “2016-07-19T16:54:03.000 + 05:30” 在 “05:30”格式有误例外。

+1

你到目前为止试过的东西? –

+1

google“java string to date”? :D – xander

+0

@ shash678给出异常 - java.lang.IllegalArgumentException:非法模式组件:X –

回答

1

您需要使用ZZ而不仅仅是时区信息的Z.

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").parseDateTime("2016-07-19T16:54:03.000+05:30") 

Javadoc摘自:

模式字母计数确定的格式。

防区:'Z'输出偏移量不带冒号,'ZZ'使用冒号输出偏移量,'ZZZ'或更多输出防区ID。

+0

java.lang.IllegalArgumentException:格式无效:“2016-07-19T16:54:03.000 + 05:30”在“05:30”异常 –

+1

@paritaporwal异常,对不起,模式中出现“+”符号不应该在那里。该行应该是DateTimeFormat.forPattern(“yyyy-MM-dd'T'HH:mm:ss.SSSZZ”)。parseDateTime(“2016-07-19T16:54:03.000 + 05:30”)。编辑答案以反映这一变化。 – DB5

+0

非常感谢......它的工作原理...... –

0

您可以尝试java.text.DateFormat中

String DEFAULT_DATE_PARSE_PATTERN="dd.MM.yyyy"; 
DateFormat format = new SimpleDateFormat(DEFAULT_DATE_PARSE_PATTERN); 
Date result = format.parse(your_value); 
+0

它只解析日期 - 星期二7月19 00:00:00 IST 2016.我也想解析时间..... –

1

你可以使用SimpleDateFormat

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

class Main { 
    public static void main(String[] args) { 
    try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); 
     Date parsed = format.parse("2016-07-19T16:54:03.000+05:30"); 
     System.out.println(parsed); 
    } catch (ParseException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

输出:

Tue Jul 19 11:54:03 UTC 2016 

试试吧here!

+0

它将我的时间从16:54:03更改为UTC时间11:54:03。我不想要。我需要时间。 –

+1

那么你需要用时区和任何你想要的格式来设置它,我想这只是一个例子,如何解析它,而不是为你的输出格式化它。因为你没有说与你约会的日期。 – xander