Java SimpleDateFormat日期是阿拉伯语

Java SimpleDateFormat日期是阿拉伯语,java,android,android-studio,date,simpledateformat,Java,Android,Android Studio,Date,Simpledateformat,我下载用户的日期数据并将该数据写入firebase。但是,从阿拉伯语位置添加数据时,日期格式将无法正常工作。 我怎样才能解决这个问题 输出: "٢٠٢١-٠٤-١٧" 我的代码: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); String currentDateandTime = df.forma

我下载用户的日期数据并将该数据写入firebase。但是,从阿拉伯语位置添加数据时,日期格式将无法正常工作。 我怎样才能解决这个问题

输出:

"٢٠٢١-٠٤-١٧"
我的代码:

            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
            String currentDateandTime = df.format(new Date());

我不想接收阿拉伯字母的数据。在任何情况下,我都应将数据视为2021年4月17日。SimpleDateFormat与java.util日期时间API及其格式API不同,它已经过时且容易出错。建议完全停止使用它们,并切换到java.time,即*

使用现代日期时间API:

输出:

"٢٠٢١-٠٤-١٧"
从了解有关现代日期时间API的更多信息

*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

java.util日期时间API及其格式化API SimpleDataFormat已经过时,并且容易出错。建议完全停止使用它们,并切换到java.time,即*

使用现代日期时间API:

输出:

"٢٠٢١-٠٤-١٧"
从了解有关现代日期时间API的更多信息

*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

我建议您在日期工作中使用java.time,这是一种现代的java日期和时间API。如果我了解到Firebase不提供日期数据类型,那么我认为您需要:

    String currentDateandTime = LocalDate.now(ZoneId.systemDefault()).toString();
    System.out.println(currentDateandTime);
刚才在我的时区运行时的输出:

2021-04-17

结果与区域设置无关。检索一个参数LocalDate.parseCharSequence时,它会将同一字符串解析回LocalDate

<>编辑:你想要的格式,2021-04-17,是一个国际标准,被称为ISO 8601,我认为在你的程序中使用它也是明智的。我正在利用以下事实:LocalDate和java.time的其他类从它们的toString方法生成ISO8601,并在它们的one-arg解析方法中解析相同的格式。因此,在处理ISO8601作为规则时,我们不需要为格式化或解析指定格式或格式化程序。如果您想要不同的格式,您应该使用DateTimeFormatter来指定它

问:java.time不需要Android API级别26吗? time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6

在Java8和更高版本以及API级别为26的较新Android设备上,内置了现代API。 在非Android Java 6和7中,获得了Three Ten Backport,即JSR 310的现代类Three Ten的Backport;请参阅底部的链接。 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从org.threeten.bp导入日期和时间类。 链接 解释如何使用java.time。 编辑: ,其中首次描述了java.time。 ,java.time的后端口到JSR-310的Java6和Java7。 ,Android版Three Ten Backport ,解释得非常透彻。
我建议您使用java.time(现代java日期和时间API)进行日期工作。如果我了解到Firebase不提供日期数据类型,那么我认为您需要:

    String currentDateandTime = LocalDate.now(ZoneId.systemDefault()).toString();
    System.out.println(currentDateandTime);
刚才在我的时区运行时的输出:

2021-04-17

结果与区域设置无关。检索一个参数LocalDate.parseCharSequence时,它会将同一字符串解析回LocalDate

<>编辑:你想要的格式,2021-04-17,是一个国际标准,被称为ISO 8601,我认为在你的程序中使用它也是明智的。我正在利用以下事实:LocalDate和java.time的其他类从它们的toString方法生成ISO8601,并在它们的one-arg解析方法中解析相同的格式。因此,在处理ISO8601作为规则时,我们不需要为格式化或解析指定格式或格式化程序。如果您想要不同的格式,您应该使用DateTimeFormatter来指定它

问:java.time不需要Android API级别26吗? time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6

在Java8和更高版本以及API级别为26的较新Android设备上,内置了现代API。 在非Android Java 6和7中,获得了Three Ten Backport,即JSR 310的现代类Three Ten的Backport;请参阅底部的链接。 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从org.threeten.bp导入日期和时间类。 链接 解释如何使用jav a、 时间。 编辑: ,其中首次描述了java.time。 ,java.time的后端口到JSR-310的Java6和Java7。 ,Android版Three Ten Backport ,解释得非常透彻。
您是否尝试过Locale.Root以便我们了解对方,您能否具体准确地描述预期/预期结果?您是否尝试过Locale.Root以便我们了解对方,您能否具体准确地描述预期/预期结果?我不想接收阿拉伯语字母表中的数据。在任何情况下,我都应将数据视为2021年4月17日。“不是/£٧/٠٠٢١”。@MustapTR-我已经更新了答案,也包括了英文版本。使用符合您要求的任何一种。我不想接收阿拉伯语字母的数据。在任何情况下,我都应将数据视为2021年4月17日。“不是/£٧/٠٠٢١”。@MustapTR-我已经更新了答案,也包括了英文版本。使用符合您要求的日期格式。我不知道如何设置我想要的日期格式,例如:yyyy-MM-dd@MustapTR对不起,那不清楚。我已经编辑过了,希望能有所帮助。我们没有设置格式,这一技巧可能令人惊讶。yyyy-MM-dd是我们不设置任何日期时得到的格式。我不知道如何设置我想要的日期格式,例如:yyyy-MM-dd@MustapTR对不起,那不清楚。我已经编辑过了,希望能有所帮助。我们没有设置格式,这一技巧可能令人惊讶。yyyy-MM-dd是我们不设置任何值时得到的格式。