作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 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
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 - 如何在 Java (android) 中自定义 SimpleDateFormat() 的日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69414089/
我是一名优秀的程序员,十分优秀!