Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我面临着使用SImpleDateFormat的法语地区的语法异常_Java_Date_Localization - Fatal编程技术网

Java 我面临着使用SImpleDateFormat的法语地区的语法异常

Java 我面临着使用SImpleDateFormat的法语地区的语法异常,java,date,localization,Java,Date,Localization,我在法语地区遇到SimpleDateFormat的ParseException。 其他语言环境也有问题,但我刚刚调试了法语。我正在从UI日历中选择日期(比如01-Avr-2016,格式为“dd-MMM-yyyy”),当我将其传递给我的代码时: String dateval = "01-Avr-2016"; Locale lformat = Locale.getDefault(); DateFormat specifiedDateFormat = new SimpleDateFormat( "dd

我在法语地区遇到SimpleDateFormat的ParseException。 其他语言环境也有问题,但我刚刚调试了法语。我正在从UI日历中选择日期(比如01-Avr-2016,格式为“dd-MMM-yyyy”),当我将其传递给我的代码时:

String dateval = "01-Avr-2016";
Locale lformat = Locale.getDefault();
DateFormat specifiedDateFormat = new SimpleDateFormat( "dd-MMM-yyyy", lformat );
specifiedDateFormat.parse( dateval );
上面的代码正在抛出错误。我发现SimpleDateFormat中的shortmonths随句点(“.”)一起出现(例如上面的例子是“avr”),我可以编写一些逻辑来处理句点,但我不想为法语地区编写任何特定的逻辑。
相反,我想知道为什么从日历(来自DateComponent)中选择的月份是“Avr”而不是“Avr”?我如何处理那个用例

首先,您的错误来自于
parse()
方法抛出ParseException。你需要处理它

其次,在法语地区,缩短的月份应在缩写后加上句号。如果您能够处理添加期间的问题,则应该没有问题。因为“01 avr.-2016”和“01 avr.-2016”都是有效的可解析日期

有一个很好的相关问题,关于解析法国日期

对于要直接处理“avr”或“avr”的情况,请使用以下命令:

LocalDate frenchDate = DateTimeFormat.forPattern("dd-MMM-yyyy").withLocale( Locale.FRENCH ).parseLocalDate("01-Avr-2016");

Java 8
中的
日期时间Api
中,您可以使用这种方式

// french date formatting (1. avril 2014)
String frenchDate = dateTime.format(DateTimeFormatter.ofPattern("d. MMMM yyyy", new Locale("fr")));
更多信息:

  • 下表显示了如何使用
    法语地区设置每个样式的日期格式:

    更新:


    使用而不是使用
    SimpleDataFormat

    创建您自己的模式请在问题的日历/日期组件部分添加一些代码。看不到那篇文章很难说发生了什么。下面已经回答了其余的问题。我有简单的DateComponent代码。受保护的日期组件m_valueDateButton;String dateString=m_valueDateButton.getDateViewModel().getDateString();我不确定,为什么月经不跟法式约会一起来。
    // french date formatting (1. avril 2014)
    String frenchDate = dateTime.format(DateTimeFormatter.ofPattern("d. MMMM yyyy", new Locale("fr")));
    
    Style   French Locale
    
    DEFAULT 30 juin 2009
    
    SHORT   30/06/09
    
    MEDIUM  30 juin 2009
    
    LONG    30 juin 2009
    
    FULL    mardi 30 juin 2009