如何输入“1502009”并获得输出“2009 年 1 月 15 日”?
我已经阅读了很多关于 SO 的日期问题,但我仍然发现很难获得实现这种特定格式的最佳和最快的方法。
任何帮助表示赞赏。
编辑:我的示例字符串来自我的 android 应用程序中的对话框日期选择器。用户选择日期月份和年份并返回不同的整数。一月表示为 0。所以在我的应用程序中,我希望 1502009 表示 2009 年 1 月 15 日。
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));
}
}
我建议你取 3 个整数变量并使用 Integer.parseInt 和 substring 计算所有 3 个字段,然后进行映射。再次计算输出字符串时,您可以添加所有单独的字符串。
我这样说是因为您的输入似乎不正确。
所以月份可以在 [0-11] 范围内,对吗?
我不认为这是一个好主意。为了方便您解析字符串,您需要为每个字段定义/恒定宽度,以便您可以应用模式ddMMyyyy
。否则,您必须找到一种方法来计算每个部分的宽度以便正确解析它,这可能会很棘手。例如,如果你有1112008
,是吗January 11, 2008
?December 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));
}
尝试以下简单代码:
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));
}