Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中格式化任何形式的日期实现的日期_Java_Date - Fatal编程技术网

在java中格式化任何形式的日期实现的日期

在java中格式化任何形式的日期实现的日期,java,date,Java,Date,我正在寻找一个函数,如果日期类型或任何其他实现抛出异常,该函数将日期格式化为给定格式 例如: formatDatejava.util.Date日期 或 formatDateorg.joda.time.LocalDateTime 或 FormatDate任何有效的日期实现 例如:java.time.LocalDateTime、javax.xml.datatype.XMLGregorianCalendar或其他日期时间实现 我无法确定收到的日期类型,因此不要要求我在项目中的任何地方都实现相同的日期类

我正在寻找一个函数,如果日期类型或任何其他实现抛出异常,该函数将日期格式化为给定格式

例如: formatDatejava.util.Date日期 或 formatDateorg.joda.time.LocalDateTime 或 FormatDate任何有效的日期实现 例如:java.time.LocalDateTime、javax.xml.datatype.XMLGregorianCalendar或其他日期时间实现

我无法确定收到的日期类型,因此不要要求我在项目中的任何地方都实现相同的日期类型

LocalDateTime.now.formatDateTimeFormatter.ISO_LOCAL_date_TIME;例如,将格式化为字符串,例如:2019-07-25T15:05:54.432


其他格式也可用,实际上您可能需要的所有标准格式都作为静态常量包含在类中。但是,它也支持自定义模式,下面的页面介绍了如何创建这些模式:

我至少会考虑两个选项:

一种接受对象参数的方法。在方法内部,使用instanceof执行一长串if-else以查找正确的类型。如果您想支持扩展java.util.Date的java.sql类型,这是一个可怕的攻击,请记住首先测试这些类型,因为java.util.Date的instanceof也将是真的。缺点:您的用户不会因为传递不受支持的类型而得到编译时错误,并且可能会发现很难找出您的方法在给定字符串或整数(例如,也可能表示日期)的情况下引发异常的原因。 每个受支持类型的重载方法,如@MarkB在注释中建议的。缺点:您需要为添加的每个新支持的类型修改API。 无论您选择一个选项还是另一个选项,都要将所获得的内容转换为实现TemporalAccessor的内容,并将其传递给DateTimeFormatter.format


作为一种好奇,String.format已经实现了您所设想的一些功能。它处理临时附件、日历、日期和长时间。

您是否查看或使用Java方法重载?当您收到日期或XMLGregorianCalendar时,只需将它们转换为LocalDateTime。然后,您可以将所有其他代码基于该类,而不管您最初是如何接收它的。