我下载了用户的日期数据并将这些数据写入firebase。但是,当从阿拉伯语位置添加数据时,日期格式将无法正常工作。我该如何解决这个问题?
输出:
"٢٠٢١-٠٤-١٧"
我的代码:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String currentDateandTime = df.format(new Date());
我不想接收阿拉伯字母的数据。在任何情况下,我都应该将数据视为17/04/2021。而不是//。
3条答案
按热度按时间5vf7fwbs1#
java.util
日期时间API及其格式化接口SimpleDateFormat
已经过时且容易出错,建议完全停用,改用modern date-time API *。使用现代日期时间API:
输出:
从**Trail: Date Time**了解有关现代日期时间API的更多信息。
jgwigjjp2#
我建议你使用java.time,现代的Java日期和时间API,用于你的日期工作。如果我知道Firebase不提供
date
数据类型,那么我认为你需要存储:在我的时区中运行时的输出:
2021-04-17
结果与locale无关。在检索时,one-arg
LocalDate.parse(CharSequence)
会将相同的字符串解析回LocalDate
。编辑:您想要的格式,2021-04-17,是称为ISO 8601的国际标准,我正在利用
LocalDate
和java.time的其他类从它们的toString
方法生成ISO 8601并在它们的one-argx 1 m5n1x方法中解析相同的格式。因此,在处理ISO 8601时(作为一项规则),我们不需要指定格式或格式化程序来进行格式化或解析。如果您想要不同的格式,您可以使用DateTimeFormatter
来指定它。提问:java.time不需要Android API level 26吗?
java.time在较旧和较新的Android设备上都能很好地工作。它只需要至少Java 6。
org.threeten.bp
导入日期和时间类及其子包。友情链接
java.time
是首次描述的。java.time
到Java 6和7的后端(JSR-310的ThreeTen)。siotufzp3#
如果你想在任何情况下将数据作为17/04/2021,你可以将第二个参数改为Locale.US。