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循环,这会浪费很多时间
答案 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类取代。对于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。您的问题基本上与许多其他问题重复。