我在我的Android应用程序中使用Locale设置了日期日期(例如21 11月2016)。但是,我想把这个日期发送到" dd-MM-yyyy" (例如,21-11-2016)格式到我的API。
当我尝试这样做时,我得到以下异常:
java.lang.IllegalArgumentException:错误类:类java.lang.String
以下是我的代码:
public String convertDate(String date) {
System.out.println("......ORIGINAL DATE....... " + date); // ......ORIGINAL DATE....... 21 11月 2016
String myFormat = "dd-MM-yyyy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, new Locale(getMyLocale())); //Japanese locale is set but tried english too
System.out.println("......CONVERTED DATE....... " + sdf.format(date)); //should be 21-11-2016 but getting above error
return sdf.format(new Date(date));
}
此外,对于美国/英语区域设置,它工作正常,但对于日语我收到此错误。
答案 0 :(得分:4)
您需要两个格式化程序,如下所示
function demoController(NgTableParams, simpleList) {
this.tableParams = new NgTableParams({
// initial sort order
sorting: { name: "asc" }
}, {
dataset: simpleList
});
}
答案 1 :(得分:1)
您正在使用java.time类取代的麻烦的旧旧日期时间类。
定义DateTimeFormatter
对象以匹配输入字符串的模式,并为日本指定Locale
。将输入字符串解析为LocalDate
对象。致电LocalDate.parse
。
定义DateTimeFormatter
对象以匹配您想要的输出。致电LocalDate::format
以生成您想要的字符串。
已经在StackOverflow中记录了很多次。请搜索以查找示例代码和进一步讨论。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。