Java 如何将日文日期转换为英文日期格式?

Java 如何将日文日期转换为英文日期格式?,java,android,date,date-format,simpledateformat,Java,Android,Date,Date Format,Simpledateformat,我使用区域设置设置日语日期(例如21 11月 2016)在我的android应用程序中。但是,我想将该日期以“dd-MM-yyyy”(例如,2016年11月21日)格式发送到我的API中 当我尝试这样做时,我得到以下异常: java.lang.IllegalArgumentException:坏类:类java.lang.String 下面是我的代码: public String convertDate(String date) { System.out.println("......OR

我使用区域设置设置日语日期(例如21 11月 2016)在我的android应用程序中。但是,我想将该日期以“dd-MM-yyyy”(例如,2016年11月21日)格式发送到我的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));
}
此外,对于美国/英语语言环境,它可以正常工作,但对于日语,我遇到了这个错误。

java.time 您正在使用由java.time类取代的麻烦的旧遗留日期时间类

定义一个
DateTimeFormatter
对象以匹配输入字符串的模式,并为日本指定一个
Locale
。将输入字符串解析为
LocalDate
对象。调用
LocalDate.parse

定义一个
DateTimeFormatter
对象以匹配所需的输出。调用
LocalDate::format
生成所需的字符串

这已经在StackOverflow中记录了很多次。请搜索以查找示例代码和进一步讨论


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • 后来
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门针对Android采用了Three Ten Backport(如上所述)
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

java.time 您正在使用由java.time类取代的麻烦的旧遗留日期时间类

定义一个
DateTimeFormatter
对象以匹配输入字符串的模式,并为日本指定一个
Locale
。将输入字符串解析为
LocalDate
对象。调用
LocalDate.parse

定义一个
DateTimeFormatter
对象以匹配所需的输出。调用
LocalDate::format
生成所需的字符串

这已经在StackOverflow中记录了很多次。请搜索以查找示例代码和进一步讨论


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • 后来
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门针对Android采用了Three Ten Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

您需要两个格式化程序,如下所示

    String in = "2016年11月 21日";   // really a space here?
    SimpleDateFormat sdf1 = new SimpleDateFormat ("yyyy年MM月 dd日");
    Date d1 = sdf1.parse(in);

    SimpleDateFormat sdf2 = new SimpleDateFormat ("dd-MM-yyyy");

    System.out.println(sdf2.format(d1));

您需要两个格式化程序,如下所示

    String in = "2016年11月 21日";   // really a space here?
    SimpleDateFormat sdf1 = new SimpleDateFormat ("yyyy年MM月 dd日");
    Date d1 = sdf1.parse(in);

    SimpleDateFormat sdf2 = new SimpleDateFormat ("dd-MM-yyyy");

    System.out.println(sdf2.format(d1));

解析字符串时,应使用
parse
not
format
以及
21 11的格式月 2016年
不是
dd-MMM-yyyy
-请尝试使用
dd-MM格式进行解析月 yyyy
如果这真的是您的字符串,请参阅dd MM yyyy是我需要的格式,但在文本标签上,我将日期设置为2016年11月21日,对于解析,我收到以下错误java.text.ParseException:无法解析的日期:“2016”年11月 21日" (在偏移量11处)@VVB所以你不知道输入的日期格式?(除了日语)@VVB编辑您的问题,以显示特定输入字符串、特定格式模式和特定输出结果或特定错误的确切示例。否则,您是在浪费我们的时间。在解析字符串时,您应该使用
parse
not
format
以及
21 11的格式月 2016年
不是
dd-MMM-yyyy
-请尝试使用
dd-MM格式进行解析月 yyyy
如果这真的是您的字符串,请参阅dd MM yyyy是我需要的格式,但在文本标签上,我将日期设置为2016年11月21日,对于解析,我收到以下错误java.text.ParseException:无法解析的日期:“2016”年11月 21日“(在偏移量11处)@VVB,所以您不知道输入日期格式?(除了日语)@VVB编辑您的问题,以显示特定输入字符串、特定格式模式和特定输出结果或特定错误的确切示例。否则,您将浪费我们的时间。