重做日期和使用例外

时间:2017-08-24 11:06:03

标签: java android date

1)从SQLIte获取日期字符串时,它看起来像这样

  

2017-08-20 13:34:08

解析之后,我希望它看起来像这样

  

20-08-2017 13:34

但是使用date1.toString(),我得到的就是这个

  

Sun Aug 20 13:34:08 GMT + 03:00 2017

如何控制日期的显示方式?

2)是否可以在try / catch块之外使用简单的日期格式解析器?它应该进入for循环,这会浪费很多时间

3 个答案:

答案 0 :(得分:2)

1) 您可以使用SimpleDateFormat类控制日期的格式:

String pattern = "MM/dd/yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
String dateString = format.format(new Date()));

2) 您可以将抛出ParseException添加到方法头,但最终您需要在代码中的某处捕获错误。

答案 1 :(得分:0)

您需要解析时间模式以获取日期。有了约会之后,你可以将它格式化回你想要的格式。

您的时间戳表示:2017-08-20 13:34:08 - > yyyy-mm-dd HH:mm:ss

SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
Date date = format.parse("2017-08-20 13:34:08");

您可能希望将其格式化为其他格式,然后您可以使用

来获取它
SimpleDateformat newFormat = new SimpleDateformat("hh:mm:ss");
String datestring = newFormat.format(date);

您可以在此处找到所有可用模式的列表 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

请注意您需要捕获ParseException,这意味着您的String不能使用您的日期格式进行解析。

答案 2 :(得分:0)

java.time

避免麻烦的遗留日期时间类,现在由java.time类取代。对于Android,请参阅ThreeTenABP项目。

转换为标准ISO 8601格式后解析字符串。

String input = "2017-08-20 13:34:08".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;

如果您只需要几分钟而想要删除更精细的数据,请截断。

LocalDateTime ldt2 = ldt.truncatedTo( ChronoUnit.MINUTES ) ;

要以特定格式生成字符串,请搜索DateTimeFormatter的堆栈溢出,因为已经多次解决此问题。

请在发布前搜索Stack Overflow。您的问题基本上与许多其他问题重复。