接受不同类型日期格式的掩码格式化程序

Posted

技术标签:

【中文标题】接受不同类型日期格式的掩码格式化程序【英文标题】:Mask formatter that accepts different types of date formats 【发布时间】:2016-09-30 18:14:55 【问题描述】:

我必须以 MM/dd/yyyy 格式显示日期。要显示的日期可以是以下任何一种格式

    MM/dd/yyyy MM/yyyy yyyy

如果只有月份和年份可用,而日期不可用,那么我必须以 MM/__/yyyy 格式显示日期,将日期留空。

如果只有年份可用,而日期和月份不可用,那么我必须以 __/__/yyyy 格式显示日期,而将日期和月份留空。

如果整个日期可用,即使用掩码格式化程序的日、月和年,我可以正确显示它。 MaskFormatter formattedDate = new MaskFormatter("##'/##'/####"); 但如果缺少日期或月份,则无法显示。

有什么方法可以显示日期和月份为空白吗?

【问题讨论】:

能否请您添加您尝试过的完整代码? 你能创建一个最小、完整和可验证的例子吗?使用此链接***.com/help/mcve 【参考方案1】:

java.time

Java 8 及更高版本中内置的 java.time 类有一个类可以满足您的每个需求:

LocalDate 仅用于日期,没有时间,也没有时区。 YearMonth 表示年份和月份,但没有日期,也没有时区。 Year 仅一年。

例如:

YearMonth ym = YearMonth.now( ZoneId.of( "Africa/Tunis" ) );

ym.toString(): 2018-02

这三个都提供了一个format 方法,您可以向该方法传递一个DateTimeFormatter 对象。您可以在 DateTimeFormatter 中定义自定义格式模式。搜索 Stack Overflow,因为这已经被讨论过很多次了。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/__/uuuu" );
String output = ym.format( f );

02/__/2018

ISO 8601

顺便说一下,考虑使用标准的ISO 8601 格式将这些值显示为文本。日期格式为YYYY-MM-DD,年月格式为YYYY-MM


关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。

从哪里获得 java.time 类?

Java SE 8Java SE 9 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6Java SE 7 ThreeTen-Backport 中的大部分 java.time 功能都向后移植到 Java 6 和 7。 Android java.time 类的 android 捆绑包实现的更高版本。 对于早期的 Android,ThreeTenABP 项目采用 ThreeTen-Backport(如上所述)。见How to use ThreeTenABP…

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuarter 和more。

【讨论】:

以上是关于接受不同类型日期格式的掩码格式化程序的主要内容,如果未能解决你的问题,请参考以下文章

GAE Big Query - 使用日期时的掩码

如何让我的模型接受两种不同的日期格式?

表时日期时,是用YYYY-MM-DD,还是RRRR-MM-DD

python使用openCV加载图像并将BGR格式转换成HSV格式定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)并使用mask信息进行颜色分离BGR格式的图像转化为RGB并可视化

python使用openCV加载图像并将BGR格式转换成HSV格式定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)并使用mask信息进行颜色分离BGR格式的图像转化为RGB并可视化

将不同格式列的String数据类型的日期转换为PostgreSQL中的日期数据类型