2016-05-12 20 views
0

我可以得到输出为Wed May 11 15:36:08 IST 2016,但我如何将日期转换为所需格式的字符串?如何解析给定的字符串格式为dd-MMM-yyyy hh:mm:ss:aa?

要求的格式为:12-05-2016 16:05:08 pm

我想的是什么,

public class Test { 
    public static void main(String args[]) throws ParseException{ 
     String epoche="1462961108000"; 
     Long initialLogTime = Long.valueOf(epoche); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(initialLogTime); 
     Calendar fromDateTime = calendar; 
     Calendar toDateTime = fromDateTime; 
     toDateTime.add(Calendar.MINUTE, 30); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss:aa"); 
     String datestring = String.valueOf(fromDateTime.getTime()); 
     String datestring1 = String.valueOf(toDateTime.getTime()); 
     System.out.println(datestring); //here output is Wed May 11 15:36:08 IST 2016 
     System.out.println(datestring1); // here output is Wed May 11 15:36:08 IST 2016 
     Date dates = dateFormat.parse(datestring); 
     Date date1s = dateFormat.parse(datestring1); 
     System.out.println(dates); 
     System.out.println(date1s); 
    } 
} 

我得到的错误是:

Exception in thread "main" java.text.ParseException: Unparseable date: "Wed May 11 16:05:08 IST 2016" 
at java.text.DateFormat.parse(DateFormat.java:357) 
at test.Test.main(Test.java:27) 
+2

你为什么要转换成字符串,然后解析,当你已经拥有* *的价值?目前还不清楚这里的最终目标是什么......(如果只是将值格式化为字符串,则根本不应该调用'parse')。 –

+0

如前所述,应该使用方法调用SimpleDateFormat 'Date'对象上的'format()',而不是'String'对象上的'parse()',以获得所需的结果 – Draken

+0

如果使用SimpleDateFormat,请考虑它是格式化程序。它可以解析和格式化。解析意味着您将转换为类型实例,例如Date。格式意味着你基本上将它转换成可读形式,通常以字符串的形式。在你的情况下,你已经有了一个约会,所以你不需要像你想要做的那样做任何中间步骤。 –

回答

3

您需要在相应的日期格式。这将帮助你

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa"); 
    System.out.println(dateFormat.format(fromDateTime.getTime())); 
    System.out.println(dateFormat.format(toDateTime.getTime())); 
+0

你的格式'dd-MMM-yyyy HH:mm:ss:aa'给出输出'11-May-2016 15:35:08:PM' –

+0

@ ankur-singhal api似乎没有提供替代case [SimpleDateFormat]](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html),所以我建议只是将大写的PM/AM替换为小写的可能是搜索和替换或拆分。 –

+1

@JoaoEsperancinha我实际上指着'May'而不是'05' –

0

,如果你使用的是Java 8中,您可以使用

日期LOCALDATE = LocalDate.now();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd-MMM-yyyy HH:mm:ss:aa”);

System.out.println(date.format(formatter));

0

请试试这个

public static void main(String[] args) { 
     String epoche = "1462961108000"; 
     Date date = new Date(Long.parseLong(epoche)); 
     DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa"); 
     String strDate = sdf.format(date); 
     System.out.println(strDate); 
    } 

输出

11-05-2016 15:35:08:PM 
-1

在Android中,传递字符串像二零一七年十一月十日11时16分46秒运作ConvertDateTime

public String ConvertUpdate(String strDate) { 

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    try { 
     Date d = simpleDateFormat.parse(strDate); 
     simpleDateFormat = new SimpleDateFormat("dd MMM yy hh:mm a"); 

     return simpleDateFormat.format(d); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

输出 17年11月10日上午11时16

相关问题