【发布时间】:2015-09-08 06:21:30
【问题描述】:
在我们的项目中,我们正在尝试以特定的标准格式解析和格式化不同的国际日期,但这会导致无法解析的日期异常,这是我的示例代码:
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class InternationalizationDate {
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormatForDate = new SimpleDateFormat("MMM dd,yyyy");// Expected format
@SuppressWarnings("unused")
String stringDate = "00:00:00 08/09/2015";// This date can be in any format as per the systems local regional settings.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
System.out.println("Local Date Format Pattern : " + simpleDateFormat.toLocalizedPattern());
// DateFormatSymbols dateFormatSymbols = simpleDateFormat.getDateFormatSymbols();
// String[] eras = { "BC" };
// dateFormatSymbols.setEras(eras);
// simpleDateFormat.setDateFormatSymbols(dateFormatSymbols);
Date date = simpleDateFormat.parse(stringDate);
String formattedDate = dateFormatForDate.format(date);
System.out.println("Converted Format : " + formattedDate);
}
}
我们哪里出错了?
【问题讨论】:
-
在您给出的代码中,值 ("00:00:00 08/09/2015") 显然与您指定的格式不匹配 ("MMM dd,yyyy ”)。你为什么要调用
applyPattern来强制简单的日期格式化程序使用该特定模式,而我认为它的重点是根据默认语言环境使用本地模式。 (诚然,即使那样,您也需要知道要使用哪种模式 - 例如,它是日期模式还是日期/时间模式。) -
@JonSkeet 对不起,我只会更新代码。但是我们该如何处理呢,我的意思是日期格式可以是任何人?
-
我们不知道您的数据来自哪里。您可能会尝试与区域设置关联的多种格式,或允许用户指定格式。
-
@JonSkeet 所以我们不能将任何格式的国际日期转换为特定格式?
-
不是“以任何格式,不知道该格式是什么”不。您可以使用
DateFormat.getDateInstance等获取多种格式来尝试,但如果用户使用的不是这些格式,那么不,只是没有足够的信息。
标签: java localization internationalization format simpledateformat