2014-09-20 318 views
0

嗨,我需要将日期(无格式)的字符串表示形式转换为日期对象并将其转换回字符串(具有特定格式)将字符串转换为日期并将日期转换回字符串

这是我迄今为止所尝试的,输出没有像预期的那样出现,而是打印出类似于08140009的东西 - 任何想法是什么

请提供任何建议。

我的代码是:

public String getDateBackToCST(String createDate){ 

    SimpleDateFormat dateFormatter = new SimpleDateFormat("MMddyyyy"); 
    TimeZone obj = TimeZone.getTimeZone("CST"); 
    dateFormatter.setTimeZone(obj); 
    Date createdDate = null; 

    try { 
     createdDate = dateFormatter.parse(createDate); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return dateFormatter.format(createdDate); 
} 
+0

什么是'createDate'的价值? – 2014-09-20 18:06:09

+0

2014-09-14它有不同的格式或它可能是日期字符串 – 2014-09-20 18:09:32

+0

Sat Sep 20 23:39:04 IST 2014 – 2014-09-20 18:10:14

回答

0

您需要为特定的SimpleDateFormat适当的标志。您有2个选项来指定时区zZ并指定日期名使用E这样

import java.text.ParseException; 
import java.text.SimpleDateFormat; 

public class Main { 



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

     String date = "Sat Sep 20 23:39:04 IST 2014 "; 
     SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy"); 
     System.out.println(sdf.parse(date)); 

    } 
} 
+0

是的,这是正确的,但每当我们调用分析方法,我们将失去时区信息哪个Date对象将不包含。我想返回的字符串在CST时区 – 2014-09-20 18:18:01

+0

@manjunathacitragar日期对象从不与任何时区关联 – SparkOn 2014-09-20 18:19:20

+0

是的,我同意..传递给该函数的字符串createDate在CST时区,当我解析它并将其格式化回来我只希望它在CST时区。 – 2014-09-20 18:23:48