SimpleDateFormat 日期为阿拉伯语

Mus*_*pTR 1 java android date simpledateformat android-studio

我下载用户的日期数据并将该数据写入 firebase。但是,当从阿拉伯位置添加数据时,日期格式将无法正常工作。\n如何解决此问题?

\n

输出:

\n
"\xd9\xa2\xd9\xa0\xd9\xa2\xd9\xa1-\xd9\xa0\xd9\xa4-\xd9\xa1\xd9\xa7"\n
Run Code Online (Sandbox Code Playgroud)\n

我的代码:

\n
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());\n            String currentDateandTime = df.format(new Date());\n
Run Code Online (Sandbox Code Playgroud)\n

我不想接收阿拉伯字母的数据。在任何情况下我都应该将数据取为 17/04/2021。不是 /\xd9\xa1\xd9\xa7/\xd9\xa2\xd9\xa0\xd9\xa2\xd9\xa1。

\n

Arv*_*ash 5

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

\n

使用现代日期时间 API:

\n
import java.time.LocalDate;\nimport java.time.ZoneId;\nimport java.time.format.DateTimeFormatter;\nimport java.util.Locale;\n\npublic class Main {\n    public static void main(String[] args) {\n        DateTimeFormatter dtfEnglish = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ENGLISH);\n\n        DateTimeFormatter dtfArabic = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ENGLISH)\n                .localizedBy(new Locale("ar"));\n\n        // Change the ZoneId as per your requirement e.g. ZoneId.of("Asia/Dubai")\n        LocalDate date = LocalDate.now(ZoneId.systemDefault());\n\n        System.out.println(date.format(dtfEnglish));\n        System.out.println(date.format(dtfArabic));\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
18/04/2021\n\xd9\xa1\xd9\xa8/\xd9\xa0\xd9\xa4/\xd9\xa2\xd9\xa0\xd9\xa2\xd9\xa1\n
Run Code Online (Sandbox Code Playgroud)\n

从Trail: Date Time中了解有关现代日期时间 API 的更多信息。

\n
\n

* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大多数java.time功能向后移植到 Java 6 和 7。如果您正在处理 Android 项目和 Android API level 仍然不符合 Java-8,请检查通过脱糖可用的 Java 8+ API以及如何在 Android 项目中使用 ThreeTenABP。\n

\n