我有一个简单的任务,就是将这种格式的日期:“2014-06-13”转换为这种格式:“2013年1月6日”
我为此声明了两个SimpleDateFormat
个对象:
private SimpleDateFormat mInputFormat = new SimpleDateFormat("yyyy-MM-DD", Locale.ENGLISH);
private SimpleDateFormat mOutputFormat = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
所以我编写代码来执行此操作:
Log.v(TAG, "orig: " + releaseDate);
try {
Date date = mInputFormat.parse(releaseDate); // create a date object using the first pattern
Log.v(TAG, "parsed:" + mInputFormat.format(date));
String newDate = mOutputFormat.format(date); // format the date object into the new format
Log.v(TAG, newDate);
aq.id(R.id.text_2).text(newDate); // sets the date
} catch (ParseException e) {
e.printStackTrace();
}
事情是,日期完全关闭。这是打印在日志上的内容:
09-15 20:07:49.035: V/TwoLinerListItemView(26700): orig: 2014-06-13
09-15 20:07:49.035: V/TwoLinerListItemView(26700): parsed:2014-01-13
09-15 20:07:49.035: V/TwoLinerListItemView(26700): January 13, 2014
我很困惑,为什么这些结果如此不同。首先,使用输入格式将原始字符串2014-06-13解析为日期对象。然后,我使用完全相同的inputdate格式格式化结果字符串,然后更改日期。就像你解析了字符串“1”然后它变成了整数2,然后当你将整数变回一个字符串时它变成了3. Whut。
答案 0 :(得分:1)
您在第一种格式中使用了大D:
new SimpleDateFormat("yyyy-MM-DD", Locale.ENGLISH);
但D代表年份日。你必须使用dd,这是一个月的日子。将其更改为:
new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);