我输入的日期像4月17日,2024年
。日期是由谷歌语音转文本服务构建的。
要将此日期格式化为不同的格式,我将使用下一段代码:
String input = "April 17th, 2024";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM d, uuuu" )
.withLocale( Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
LocalDate ld = zdt.toLocalDate();
DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
String output = ld.format( fLocalDate);
System.out.println(output);
我更愿意避免添加额外的逻辑和改进输入数据的日期模式。正是在这一步,我需要帮助(我在java文档中找不到正确的解决方案)。
所以我希望得到格式化程序的更正或确认,java不支持日期可以是17th
、3th
等等的标准。
看来java.time
不支持序数。
我能想到的一个“模式解决方案”是使用可选部分(即[
和]
之间的字符)的方案:mmmm d['th']['st']['nd']['rd'],yyyy
例如:
jshell> var fmt = DateTimeFormatter.ofPattern("MMMM d['th']['st']['nd']['rd'], yyyy").withLocale(Locale.US)
fmt ==> Text(MonthOfYear)' 'Value(DayOfMonth)['th']['st'] ... earOfEra,4,19,EXCEEDS_PAD)
jshell> LocalDate.parse("April 17th, 2024", fmt)
$63 ==> 2024-04-17
jshell> LocalDate.parse("April 1st, 2024", fmt)
$64 ==> 2024-04-01
jshell> LocalDate.parse("April 3rd, 2024", fmt)
$65 ==> 2024-04-03
jshell> LocalDate.parse("April 4, 2024", fmt)
$66 ==> 2024-04-04
jshell> LocalDate.parse("April 1fo, 2024", fmt)
| Exception java.time.format.DateTimeParseException: Text 'April 1fo, 2024' could not be parsed at index 7
| at DateTimeFormatter.parseResolved0 (DateTimeFormatter.java:2046)
| at DateTimeFormatter.parse (DateTimeFormatter.java:1948)
| at LocalDate.parse (LocalDate.java:428)
| at (#68:1)
jshell> LocalDate.parse("April 1baar, 2024", fmt)
| Exception java.time.format.DateTimeParseException: Text 'April 1baar, 2024' could not be parsed at index 7
| at DateTimeFormatter.parseResolved0 (DateTimeFormatter.java:2046)
| at DateTimeFormatter.parse (DateTimeFormatter.java:1948)
| at LocalDate.parse (LocalDate.java:428)
| at (#69:1)
jshell> LocalDate.parse("April 1th, 2024", fmt)
$67 ==> 2024-04-01
并且它还将接受janarian3thstndrd,2024
。我不知道是否会有问题:
jshell> LocalDate.parse("January 3thstndrd, 2024", fmt)
$97 ==> 2024-01-03
问题内容: 我得到一个Date对象,我需要将其转换为XMLGregorian Calendar特定格式 我尝试了以下方法 我有一个例外,可以肯定的是我在这里做错了。但是我想将Date对象格式化为指定的格式,这可以完美地由sdf.format完成。 但是,如何为同一对象(来自formattedDate)创建XMLGregorianCalendar对象? 问题答案: 您可以通过date对象本身来实现:
但这对对象没有任何影响,它还是用旧格式的,不能真正理解它为什么会那样。
以下是在日期格式化模式中使用字符。 Sr.No. 类和描述 1 G 要显示时代。 2 y 显示年份。 有效值yy,yyyy。 3 M 显示月份。 有效值MM,MMM或MMMMM。 4 d 显示月份的日期。 有效值d,dd。 5 h 显示一天中的小时(上午1-12点/下午)。 有效值hh。 6 H 显示一天中的小时(0-23)。 有效值HH。 7 m 显示小时(0-59)。 有效值mm。 8 s 显
问题内容: 使用MySQL 表 询问 我想以特定格式显示日期 预期产量 如何在mysql中进行查询。 需要查询帮助 问题答案: 您可以将DATE_FORMAT与格式字符串’%d-%M-%Y’一起使用。 结果:
类似于: 2016年4月1日 2016年4月3日 2016年4月22日的日期格式将是什么 那么有没有API可以这样解析日期呢? 编辑:重复的问题不包含任何关于分析日期1(st)、2(nd)、3(rd)的答案。我不知道如何分析第1中的st,第2中的nd和第3中的rd。
我需要按照格式解析日期,但它没有很好地工作。 我需要日期对象在07/06/2013格式,即使日期是任何格式。但parse方法总是在2013年6月7日00:00:00 PKT星期五返回。