无法在Java中以波兰语语言环境解析格式为d MMMM yyyy的日期

阿米特·阿加瓦尔

我试图在波兰语区域设置中以d MMMM yyyy格式解析日期(2020年12月3日),但无法解析。但是为什么在所有其他语言环境(例如英语等)中,相同的解析仍然可以正常工作。下面是无法正常工作的代码示例。有人可以帮忙吗?

    Locale loc = new Locale("pl", "PL");
    String date = "3 December 2020";
    SimpleDateFormat sdFormat =
            new SimpleDateFormat("d MMMM yyyy", loc);
    sdFormat.setLenient(false);
    try {
        Date d = sdFormat.parse(date);
        System.out.println(d);
    } catch (ParseException e) {
        e.printStackTrace();
    }
阿文德·库玛·阿维纳什(Arvind Kumar Avinash)

似乎您对解析格式化感到困惑

由于输入了日期字符串English,因此您需要使用Locale.ENGLISH 进行解析,并且需要SimpleDateFormatwith的另一个实例来使用Locale("pl", "PL") 格式化获取的java.util.Date对象new Locale("pl", "PL")

演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String args[]) {
        Locale loc = new Locale("pl", "PL");
        String date = "3 December 2020";
        SimpleDateFormat sdfForParsing = new SimpleDateFormat("d MMMM yyyy", Locale.ENGLISH);
        SimpleDateFormat sdfForFormatting = new SimpleDateFormat("d MMMM yyyy", loc);
        sdfForParsing.setLenient(false);
        try {
            Date d = sdfForParsing.parse(date);
            System.out.println(d);
            String localiseByPolish = sdfForFormatting.format(d);
            System.out.println(localiseByPolish);

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

输出:

Thu Dec 03 00:00:00 GMT 2020
3 grudnia 2020

我相信您已经知道,日期时间对象仅存储日期时间信息* 1不存储格式信息在打印时,日期时间对象将打印toString由其类实现返回的字符串此外,java.util.Date对象并不代表真正的日期时间类,因为它仅存储毫秒(例如,new Date()对象使用的毫秒数实例化January 1, 1970, 00:00:00 GMT),并且在打印时,它会在JVM的时区中计算日期时间并打印相同,即如果您在世界任何地方的给定时刻执行以下两行,

Date date = new Date();
System.out.println(date.getTime());

您将获得相同的号码。查看此答案以获取演示。

的日期时间APIjava.util及其格式APISimpleDateFormat已经过时,由于存在如此多的此类骇客,因此容易出错。建议完全停止使用它们,并切换到现代日期时间APITrail:Date Time上了解有关现代日期时间API的更多信息

注意:如果您正在为一个Android项目工作,并且您的Android API级别仍不兼容Java-8,请检查可通过desugaring获得的Java 8+ API如何在Android Project中使用ThreeTenABP

使用现代的日期时间API:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.ResolverStyle;
import java.util.Locale;

public class Main {
    public static void main(String args[]) {
        Locale loc = new Locale("pl", "PL");
        String date = "3 December 2020";
        DateTimeFormatter dtfForParsing = DateTimeFormatter.ofPattern("d MMMM yyyy", Locale.ENGLISH)
                                            .withResolverStyle(ResolverStyle.LENIENT);
        DateTimeFormatter dtfForFormatting = DateTimeFormatter.ofPattern("d MMMM yyyy", loc);
        LocalDate localeDate = LocalDate.parse(date, dtfForParsing);
        System.out.println(localeDate);
        String localiseByPolish = localeDate.format(dtfForFormatting);
        System.out.println(localiseByPolish);
    }
}

输出:

2020-12-03
3 grudnia 2020

* 1现代日期时间API还会存储时区信息。检查概述以了解有关这些类的更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以yyyy-MM-DD日期格式转换日期的MMMM yyyy格式

来自分类Dev

如何在Google Data Studio中使用“ mmmm d,YYYY h:MA”格式解析日期

来自分类Dev

“ EEEE,MMMM d,yyyy'at'HH:mm”

来自分类Dev

如何从Moment.js将日期格式转换为DD MMMM YYYY

来自分类Dev

如何使用SQL Server将datetime日期选择为dddd,dd mmmm,yyyy?

来自分类Dev

如何使用SQL Server将datetime日期选择为dddd,dd mmmm,yyyy?

来自分类Dev

Selenium + js:在字符串中匹配日期“ dd Mmmm yyyy”

来自分类Dev

使用jQuery将工作日,dth mmmm yyyy转换为dd / mm / yyyy格式

来自分类Dev

在绑定时将字符串解析为DateTime到String(“ dddd,MMMM dd,yyyy”)

来自分类Dev

Excel公式将日期从dddd mmmm dd,yyyy转换为dd / mm / yyyy

来自分类Dev

在Joda的波兰语言环境中解析日期?

来自分类Dev

如何使用DateTimeFormatter从MONTH(“ MMMM”)或YEAR(“ yyyy”)获取Date对象

来自分类Dev

将矩的“ MMMM做YYYY,h:mm a”转换为isoStringFormat

来自分类Dev

Excel VBA-月,以“ mmmm”格式

来自分类Dev

Excel VBA-月,以“ mmmm”格式

来自分类Dev

BigQuery无法从CSV文件解析M / D / YYYY格式的日期

来自分类Dev

无法将日期字符串“ 2017-01-01 13:40:15.314”转换为“ dd MMMM yyy hh:mm a”格式

来自分类Dev

日期格式dd / mm / yyyy读为mm / dd / yyyy

来自分类Dev

SQL 格式('MMMM')在 SQL Server 2008 中不起作用

来自分类Dev

格式为“ YYYY.mm”的日期

来自分类Dev

无法允许日期为dd / mm / yyyy

来自分类Dev

格式错误的纬度经度DDDMM.MMMM 2832.3396N

来自分类Dev

月日期和日期的正则表达式(dd mmmm和日期)

来自分类Dev

DatePicker值无法转换。日期格式为dd / MM / yyyy

来自分类Dev

使用R中的RegEx以Mon,DD,YYYY格式解析日期

来自分类Dev

RegEx日期格式MM / DD / YYYY

来自分类Dev

jQuery dd / MM / yyyy日期格式验证

来自分类Dev

dd-MMM-yyyy的JQgrid日期格式

来自分类Dev

以dd-MM-yyyy格式插入日期

Related 相关文章

  1. 1

    如何以yyyy-MM-DD日期格式转换日期的MMMM yyyy格式

  2. 2

    如何在Google Data Studio中使用“ mmmm d,YYYY h:MA”格式解析日期

  3. 3

    “ EEEE,MMMM d,yyyy'at'HH:mm”

  4. 4

    如何从Moment.js将日期格式转换为DD MMMM YYYY

  5. 5

    如何使用SQL Server将datetime日期选择为dddd,dd mmmm,yyyy?

  6. 6

    如何使用SQL Server将datetime日期选择为dddd,dd mmmm,yyyy?

  7. 7

    Selenium + js:在字符串中匹配日期“ dd Mmmm yyyy”

  8. 8

    使用jQuery将工作日,dth mmmm yyyy转换为dd / mm / yyyy格式

  9. 9

    在绑定时将字符串解析为DateTime到String(“ dddd,MMMM dd,yyyy”)

  10. 10

    Excel公式将日期从dddd mmmm dd,yyyy转换为dd / mm / yyyy

  11. 11

    在Joda的波兰语言环境中解析日期?

  12. 12

    如何使用DateTimeFormatter从MONTH(“ MMMM”)或YEAR(“ yyyy”)获取Date对象

  13. 13

    将矩的“ MMMM做YYYY,h:mm a”转换为isoStringFormat

  14. 14

    Excel VBA-月,以“ mmmm”格式

  15. 15

    Excel VBA-月,以“ mmmm”格式

  16. 16

    BigQuery无法从CSV文件解析M / D / YYYY格式的日期

  17. 17

    无法将日期字符串“ 2017-01-01 13:40:15.314”转换为“ dd MMMM yyy hh:mm a”格式

  18. 18

    日期格式dd / mm / yyyy读为mm / dd / yyyy

  19. 19

    SQL 格式('MMMM')在 SQL Server 2008 中不起作用

  20. 20

    格式为“ YYYY.mm”的日期

  21. 21

    无法允许日期为dd / mm / yyyy

  22. 22

    格式错误的纬度经度DDDMM.MMMM 2832.3396N

  23. 23

    月日期和日期的正则表达式(dd mmmm和日期)

  24. 24

    DatePicker值无法转换。日期格式为dd / MM / yyyy

  25. 25

    使用R中的RegEx以Mon,DD,YYYY格式解析日期

  26. 26

    RegEx日期格式MM / DD / YYYY

  27. 27

    jQuery dd / MM / yyyy日期格式验证

  28. 28

    dd-MMM-yyyy的JQgrid日期格式

  29. 29

    以dd-MM-yyyy格式插入日期

热门标签

归档