2015-11-28 27 views
-1

我已经/日期所存储的DD/MM格式如下字符串变量YY是英国格式定制Java中的日期格式是在特定的顺序

String s= "04-MAR-15" 
String t ="04/03/15" 
String p ="04/03/2015" 
String w ="04-03-2015" 

现在我想他们的转换在DD/MM/YYYY格式格式, 请指教我如何转换自己的格式,通过简单的Java的日期格式,并显示在控制台上。

+2

在发布问题前做一些分析。在互联网上有很多例子 – Rehman

+0

@Raheman同意你在java中有更多简单日期格式的例子 –

+0

@Rehman你可以将它标记为一个副本..在这个例子中,你也需要一些分析..而不是粗鲁地说些什么。 –

回答

0

的过程是一个两个步骤的过程:

  • 使用的DateFormat
  • parse方法转换的StringDate使用DateFormat的方法格式与期望的转换的Date到新String格式

使用SimpleDateFormat具体类。请参阅文档以了解所需的模式。

+0

FYI ,诸如['java.util.Date'](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)之类的麻烦的旧日期时间类,['java .util.Calendar'](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html)和'java.text.SimpleTextFormat'现在是[legacy](https: //en.wikipedia.org/wiki/Legacy_system),由[java.time]代替(https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)类。请参见[Oracle教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 –

0

尝试用每个预期的格式

当你拥有的各种格式输入解析,如果这些格式是互斥的(不是暧昧彼此),只需尝试解析每个已知的可能格式,直到一个工作。当解析尝试失败时,捕获抛出的Exception并尝试使用下一个格式进行解析。

有关解析字符串转换成日期,唯一对象的详细信息,请参阅How can I change the date format in Java?许多Stack Overflow上已经取得其他职位。这是一个简短的代码示例。

首先,界定和收集一系列格式化对每项预期格式。

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)) ; 

尝试每个格式化程序,直到一个成功。

LocalDate ld = null ; 
for(DateTimeFormatter f : formatters) { 
    try{ 
     ld = LocalDate.parse(input , f); 
     break ; // End this 'for' loop. We succeeded in parsing, so no need to try more formatters. 
    } catch (DateTimeParseException e) { 
     // Swallow this exception as we expect it when trying a series of formatters. 
    } 
} 

测试,看看是否所有的格式化无法解析。这意味着我们收到了意外格式的输入,一个错误情况。

if(null == ld) { // All the formatters were tried but failed. 
    … // Deal with unexpected input. 
} 

使用DateTimeFormatter生成一个新的字符串作为输出。考虑使用ofLocalized…方法而不是指定特定的格式。

ISO 8601

就个人而言,我不建议人们使用两位数的年份。这不会导致混淆与月份和日期模糊不清。内存是足够便宜,而且屏幕够大,我们可以轻松负担的点点像素,支持4位数年的奢侈品。

另外,还要考虑完全避免你的模式。对于数据交换,仅使用标准ISO 8601格式。对于迄今为止,只有这将是YYYY-MM-DD,例如2017-01-23


关于java。时间

java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?

ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval,YearWeek,YearQuartermore