我试着更新一些东西(是 * SimpleDateFormat * 的法语版本)。这是我第一次在那里发帖,所以请善待
这是我的代码,它的工作经过这么多的尝试!
创建一个方法来更改第一天(在法国为1er):
public static String dateSuffix(final Calendar calendar) {
final int date = calendar.get(Calendar.DATE);
if (date % 30 == 1) if (date == 1) return "er";
return "";
}
在此处添加方法:
public String getDateAttestation() {
DateFormat formaterDateAttest = new SimpleDateFormat("EEEE d'%s' MMMM yyyy", Locale.FRANCE);
return String.format(formaterDateAttest.format(dateAttestation.getDateEditor().getDate()), dateSuffix(dateAttestation.getCalendar()));
}
我的视图中的所有内容都链接到JDateChooser():
dateAttestation = new JDateChooser();
dateAttestation.setDateFormatString("dd MMMM yyyy");
dateAttestation.setCalendar(Calendar.getInstance()); // set la date du jour dans le frame
你觉得这样合适吗?我应该改进什么?
谢谢大家
用社区经验优化我的代码。
- 更新**
我复制了Arvind Kumar Avinash提供的代码。我现在的问题是,我必须导入一个日期选择与JDateChooser工具在我的框架之前显示。
然后解析getter:
public Date getDateAttestation(Date ignoredDate) {
return dateAttestation.getDateEditor().getDate();
}
所以
public String getDateAttestation() {
Date date = new Date();
date = getDateAttestation(date);
OffsetDateTime odtDateAttest = date.toInstant().atOffset(ZoneOffset.UTC);
DateTimeFormatter daformatter = DateTimeFormatter.ofPattern(String.format("EEEE d'%s' MMMM uuuu", dateSuffix(odtDateAttest.getDayOfMonth())), Locale.FRANCE);
return odtDateAttest.format(daformatter);
}
对于"jeudi 1er decembre 2022"工作得很好,但从这个方法中给我"vendredi 2 'decembre 2022":
static String dateSuffix(final int dayOfMonth) {
return (dayOfMonth % 30 == 1 || dayOfMonth == 1) ? "er" : "";
}
如果我在
: " ";
}
我也在我的结果中得到了一个空间,但我不想那样,有什么想法吗?:)
1条答案
按热度按时间2lpgd9681#
java.时间
java.time
API于2014年3月随Java-8一起发布,取代了error-prone legacy date-time API。从那时起,强烈推荐使用这种现代的日期-时间API。如果您正在获取
java.util.Date
的示例,则可以通过使用Date#toInstant
将其转换为Instant
来切换到现代日期-时间API。演示:
输出:
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。