我有这个字符串
23 / Gennaio / 2014
我需要这个其他字符串
23/01/2014
我尝试使用joda.time :
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MMM/yyyy").withLocale(Locale.ITALY);
DateTime instance = format.parseDateTime("23/Gennaio/2014");
String month_number = String.valueOf(instance.getMonthOfYear());
但我得到了这个例外:
01-06 13:31:55.341:E / AndroidRuntime(1116):java.lang.IllegalArgumentException:格式无效:“23 / Gennaio / 2014”
我错过了什么?
答案 0 :(得分:5)
似乎期望月份名称为小写(不确定原因):
DateTime instance = format.parseDateTime("23/Gennaio/2014".toLowerCase(Locale.ITALIAN));
应该更好。
答案 1 :(得分:2)
23 / Gennaio / 2014 不是要解析的有效日期字符串。
尝试 23 / gennaio / 2014 并尝试使用“dd / MMMM / yyyy”格式解析(添加 M )
答案 2 :(得分:1)
为什么不是纯粹的java?
SimpleDateFormat formatIn = new SimpleDateFormat("dd/MMM/yyyy", Locale.ITALY);
Date instance = formatIn.parse("23/Gennaio/2014");
SimpleDateFormat formatOut = new SimpleDateFormat("dd/MM/yyyy", Locale.ITALY);
System.out.println(formatOut.format(instance));
String month_number = String.valueOf(instance.getMonth()); //DEPRECETDE USE CALENDAR
结果是“2014年1月23日”
答案 3 :(得分:0)
使用此代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String dateString = "23/Gennaio/2014";
Log.i("meenal","Date 2:"+localizeDate(dateString, Locale.ITALY));
}
private String localizeDate(String inputdate, Locale locale) {
Date date = new Date();
SimpleDateFormat dateFormatCN = new SimpleDateFormat("dd/MMM/yyyy", locale);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
date = dateFormatCN.parse(inputdate);
Log.i("meenal", "Date:"+date);
} catch (Exception e) {
Log.e("meenal", e.getMessage(),e);
return inputdate;
}
return dateFormat.format(date);
}