1

如何输入“1502009”并获得输出“2009 年 1 月 15 日”?

我已经阅读了很多关于 SO 的日期问题,但我仍然发现很难获得实现这种特定格式的最佳和最快的方法。

任何帮助表示赞赏。

编辑:我的示例字符串来自我的 android 应用程序中的对话框日期选择器。用户选择日期月份和年份并返回不同的整数。一月表示为 0。所以在我的应用程序中,我希望 1502009 表示 2009 年 1 月 15 日。

4

4 回答 4

3
use the following code to convert into the required format

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

public class dateconversion {
    /**
     * @param args
     */
    public static void main(String[] args) {
        String maxDate = "15012009";
        SimpleDateFormat fromFormat = new SimpleDateFormat("ddMMyyyy");
        SimpleDateFormat toFormat = new SimpleDateFormat("MMMM dd, yyyy");
        Date date = null;
        try {
            date = fromFormat.parse(maxDate);
        } catch (java.text.ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("formated date:-" + toFormat.format(date));
    }
}
于 2013-10-11T10:17:33.137 回答
0

我建议你取 3 个整数变量并使用 Integer.parseInt 和 substring 计算所有 3 个字段,然后进行映射。再次计算输出字符串时,您可以添加所有单独的字符串。

我这样说是因为您的输入似乎不正确。

于 2013-10-11T10:12:08.127 回答
0

所以月份可以在 [0-11] 范围内,对吗?

我不认为这是一个好主意。为了方便您解析字符串,您需要为每个字段定义/恒定宽度,以便您可以应用模式ddMMyyyy。否则,您必须找到一种方法来计算每个部分的宽度以便正确解析它,这可能会很棘手。例如,如果你有1112008,是吗January 11, 2008December 1, 2008

我建议您更正日期选择器以返回易于解析的日期字符串表示:

@Test
public void formatDateFromPicker() throws ParseException {
    // values from date picker
    int day = 15;
    int month = 0;
    int year = 2009;

    // build the easy to parse string from date picker: 15012009
    String strDate = String.format("%02d%02d%04d", 
            day, (month+1 /* add 1 if months start at 0 */), year);
    System.out.println(strDate);

    // parse the date string from the date picker
    Date date = new SimpleDateFormat("ddMMyyyy").parse(strDate);

    // ouput January 15, 2009
    System.out.println(new SimpleDateFormat("MMMM dd, yyyy").format(date));
}
于 2013-10-11T10:51:41.727 回答
0

尝试以下简单代码:

public static void main(String[] args) throws ParseException {
    String str="1502009";
    SimpleDateFormat format=new SimpleDateFormat("DDMyyyy");
    SimpleDateFormat resformat=new SimpleDateFormat("MMMM DD, yyyy");
    Date date =format.parse(str);
    System.out.println(resformat.format(date));
}
于 2013-10-11T10:07:20.317 回答