gpt4 book ai didi

java - 如何在 Java (android) 中自定义 SimpleDateFormat() 的日期格式?

转载 作者:行者123 更新时间:2023-12-05 00:18:08 25 4
gpt4 key购买 nike

在我的 PHP 网页中,我使用了这段代码(如下所示),它以我想要的格式给出了日期,即(示例) 2021 年 10 月 2 日 .

<?php
date_default_timezone_set('Asia/Calcutta');
echo date('jS M\. Y'); //result = 2nd Oct. 2021
?>
现在,我想用 Java 实现同样的效果 - 当我尝试添加格式 jS M\. Y 时在Java(android)中,它向我展示了一些我无法理解的错误......这是我在Java中尝试过的 -
String date = new SimpleDateFormat("jS M\. Y", Locale.getDefault()).format(new Date());
我目前是 Java 新手,刚刚发现了这门课,所以我不太了解请指导我...谢谢!

最佳答案

java.timejava.util日期时间 API 及其格式化 API,SimpleDateFormat已过时且容易出错。建议完全停止使用并切换到modern Date-Time API *。
使用 java.time 的解决方案,现代日期时间 API:

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.now(ZoneId.of("Asia/Kolkata"));
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.appendText(ChronoField.DAY_OF_MONTH, ordinalMap())
.appendPattern(" MMM. uuuu")
.toFormatter(Locale.ENGLISH);
String output = date.format(dtf);
System.out.println(output);
}

static Map<Long, String> ordinalMap() {
String[] suffix = { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" };
Map<Long, String> map = new HashMap<>();

for (int i = 1; i <= 31; i++)
map.put((long) i, String.valueOf(i) + suffix[(i > 3 && i < 21) ? 0 : (i % 10)]);

return map;
}
}
输出:
2nd Oct. 2021
ONLINE DEMO
了解有关现代日期时间 API 的更多信息Trail: Date Time .

更新
来自 Joachim Sauer 的宝贵评论:

Since this is tagged as Android, it should be noted that java.time isavailable in Android since 8.0 (Oreo) and most of it can be accessedeven when targeting older versions through desugaring.



* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport它将大部分 java.time 功能向后移植到 Java 6 和 7。如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project .

关于java - 如何在 Java (android) 中自定义 SimpleDateFormat() 的日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69414089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com