如何在Java中将数值转换为日期?

时间:2013-10-10 17:14:43

标签: java date

我有一个值列表1201211201352005存储为字符串,我需要将它们转换为2012年1月,2013年11月,2005年5月。我知道如何使用解析字符串并使用if语句来完成此操作。有没有有效的方法?

3 个答案:

答案 0 :(得分:4)

这样的事可能有用:

String val = "12012";
int numVal = Integer.parseInt(val);
int year = numVal % 10000;
int month = numVal / 10000;
... create a date from that ...

我不知道你是想要一个java Date还是Calendar或者其他什么。

Calendar cal = Calendar.getInstance().clear();
cal.set(year, month-1, 1);

Date date = cal.getTime();

或Joda没有时区的日期时间:

LocalDate dt = new LocalDate(year, month, 1);

答案 1 :(得分:3)

使用SimpleDateFormat模式可以轻松实现:尝试使用以下简单代码:

String str="12012";//112013 , 52005
SimpleDateFormat format=new SimpleDateFormat("Myyyy");
SimpleDateFormat resFormat=new SimpleDateFormat("MMM yyyy");
Date date=format.parse(str);
System.out.println(resFormat.format(date));

答案 2 :(得分:2)

由于您的字符串表示日期有两种不同格式Myyyy和MMyyyy,SimpleDateFormat我不确定您是否可以避免if语句,我就是这样做的:

    SimpleDateFormat sdf1 = new SimpleDateFormat("Myyyy");
    SimpleDateFormat sdf2 = new SimpleDateFormat("MMyyyy");
    Date d = null;
    if(5 == s.length()){
        d = sdf1.parse(s);
    }else if(6 == s.length()){
        d = sdf2.parse(s);
    }