Java

2010-12-22 96 views
3

我在“dd-MM-yyyy HH:mm”中有一个字符串,需要将其转换为格式为 “yyyy-MM-dd HH:mm”的日期对象。Java

下面是代码我使用

oldScheduledDate = "16-05-2011 02:00:00"; 
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date oldDate = (Date)formatter.parse(oldScheduledDate); 

转换现在,当我打印oldDate,我得到

Sat Nov 01 02:00:00 GMT 21,这是完全错误的,我究竟做错了什么?

回答

19
String dateSample = "10-01-2010 21:10:05"; 

    String oldFormat = "dd-MM-yyyy HH:mm:ss"; 
    String newFormat = "yyyy-MM-dd HH:mm:ss"; 

    SimpleDateFormat sdf1 = new SimpleDateFormat(oldFormat); 
    SimpleDateFormat sdf2 = new SimpleDateFormat(newFormat); 


    try { 
     System.out.println(sdf2.format(sdf1.parse(dateSample))); 

    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

我认为你需要在你的格式结尾添加:ss,但还没有经过测试来确认。 – Mikezx6r 2010-12-22 18:16:14

+0

“YASTA!”,谢谢! – jrey 2010-12-22 18:21:39

5

“yyyy-MM-dd”甚至不会像“16-05-2011”那样看起来像一样。嗯。那么,为什么不呢?

提示:

  1. 日期格式是非常字面。它采用指定的格式并使用它 - 没有什么奇特的。
  2. 处理:输入日期字符串 - >转换(带输入格式) - >日期 - >转换(带输出格式) - >输出日期字符串
  3. 该帖子中的代码包含输出格式,但没有导入格式。
+0

我不知道,另一种选择是我拆分字符串,然后将值设置为calenday对象,这将解决问题,但这真的让我疯狂! – Vivek 2010-12-22 17:45:30

0

你需要的时候,你要输出格式的日期




public static void main(String[] args) throws ParseException { 

     String oldScheduledDate = "16-05-2011 02:00:00"; 
     DateFormat oldFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
     DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date oldDate = (Date)oldFormatter .parse(oldScheduledDate); 
     System.out.println(formatter.format(oldDate)); 
    } 

1

但是,16-05-2011 02:00:00不YYYY-MM-DD HH配对使用格式化:mm:ss

1

一个简单的方法是在字母周围进行交换。

String s = "16-05-2011 02:00:00"; 
String newDate=s.substring(6,10)+s.substring(3,6)+'-'+s.substring(0,2)+s.substring(10);