将java中的日期格式自定义为特定顺序

将java中的日期格式自定义为特定顺序,java,Java,我有以下字符串变量,其中日期以英国格式的dd/mm/yy格式存储 String s= "04-MAR-15" String t ="04/03/15" String p ="04/03/2015" String w ="04-03-2015" 现在我想将它们的格式转换为DD/MM/YYYY格式, 请告知我如何通过java中的简单日期格式转换其格式并在控制台上显示。该过程分为两步: 使用DateFormat 使用带有所需格式的DateFormat方法格式,将Date转换为新的String 使

我有以下字符串变量,其中日期以英国格式的dd/mm/yy格式存储

String s= "04-MAR-15"
String t ="04/03/15"
String p ="04/03/2015"
String w ="04-03-2015"
现在我想将它们的格式转换为DD/MM/YYYY格式,
请告知我如何通过java中的简单日期格式转换其格式并在控制台上显示。

该过程分为两步:

  • 使用
    DateFormat
  • 使用带有所需格式的
    DateFormat
    方法格式,将
    Date
    转换为新的
    String
使用混凝土类。请参阅文档以了解所需的模式。

尝试对每种预期格式进行解析 当您有各种格式的输入时,如果这些格式是互斥的(彼此之间没有歧义),只需尝试解析每个已知的可能格式,直到其中一种工作。当解析尝试失败时,捕获抛出的异常并尝试使用下一种格式进行解析

有关将字符串解析为仅日期对象的更多信息,请参阅和许多其他关于堆栈溢出的文章。下面是一个简短的代码示例

首先,为每个预期格式定义并收集一系列格式化程序

Locale locale = Locale.UK ;
List<DateTimeFormatter> formatters = new ArrayList<>( 4 );
formatters.add( DateTimeFormatter.ofPattern( "dd-MMM-uu" , locale ) ) ;
formatters.add( DateTimeFormatter.ofPattern( "dd-MM-uu" , locale ) ) ;
formatters.add( DateTimeFormatter.ofPattern( "dd/MM/uuuu" , locale ) ) ;
formatters.add( DateTimeFormatter.ofPattern( "dd-MM-uuuu" , locale ) ) ;
测试以查看是否所有格式化程序都无法解析。这意味着我们收到了意外格式的输入,这是一种错误情况

if( null == ld ) {  // All the formatters were tried but failed.
    … // Deal with unexpected input.
}
使用
DateTimeFormatter
生成一个新字符串作为输出。考虑使用“本地化”…<代码>方法的<代码>,而不是指定特定的格式。 ISO 8601 就个人而言,我建议不要使用两位数的年份。这就造成了对月份和日期的混淆。内存足够便宜,屏幕也足够大,我们可以轻松负担得起支持4位数年份的比特和像素

同时,考虑完全避免你的模式。对于数据交换,仅使用标准格式。仅适用于YYYY-MM-DD日期,如
2017-01-23


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

在发布问题之前进行一些分析。这本书中有大量的例子internet@Raheman同意您的看法,在中有更多简单日期格式的示例java@Rehman您可以将其标记为一个副本,您还需要进行一些分析。。与粗鲁地说些什么不同..可能与FYI重复,现在麻烦的旧日期时间类(如,
java.text.SimpleTextFormat
)被类取代。看见
if( null == ld ) {  // All the formatters were tried but failed.
    … // Deal with unexpected input.
}