我的日期/时间值为 2010-07-26T11:37:52Z , 现在我希望以 26-jul-2010(dd-mon-yyyy)格式约会,我该怎么做?
答案 0 :(得分:24)
构造两个SimpleDateFormat对象。第一个将值解析为()到Date对象,第二个用于将Date对象转换回字符串,例如
try {
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
DateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy");
return df2.format(df1.parse(input));
}
catch (ParseException e) {
return null;
}
解析可以抛出ParseException,因此您需要捕获并处理它。
答案 1 :(得分:3)
您是否尝试过使用Java的SimpleDateFormat
课程?它包含在android SDK中:http://developer.android.com/reference/java/text/SimpleDateFormat.html
答案 2 :(得分:1)
我正在提供现代答案。没有人可以再使用SimpleDateFormat
。
解析文本。
String dateTimeValue = "2010-07-26T11:37:52Z";
OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeValue);
生成文本。
DateTimeFormatter dateFormatter =
DateTimeFormatter.ofPattern(
"dd-MMM-uuuu",
Locale.forLanguageTag("pt-BR")
);
String wantedFormattedDate = dateTime.format(dateFormatter);
输出:
System.out.println(wantedFormattedDate);
2010年7月26日
输出中的月份缩写取决于所提供的语言环境(在我的示例中为巴西葡萄牙语)。
我正在利用您的日期时间采用ISO 8601格式这一事实,即java.time类解析(也可以打印)为默认格式,即没有任何显式格式化程序的格式。
避免在其他答案中使用SimpleDateFormat
类。众所周知,那堂课很麻烦,而且已经过时了。
通常,您不希望将日期和时间从一种格式的字符串转换为另一种格式的字符串。在程序中,将日期和时间保留为日期时间对象,例如Instant
或OffsetDateTime
。仅在需要提供字符串时,将日期格式化为一个。