Java 如何在Android中解码日期日期时间戳
下面的代码给了我Datetimestamp作为[2020-07-183 17:07:55.551]。问题是Datetimestamp中的“Day”有三个数字。如何将Java 如何在Android中解码日期日期时间戳,java,android,simpledateformat,datetime-format,dayofmonth,Java,Android,Simpledateformat,Datetime Format,Dayofmonth,下面的代码给了我Datetimestamp作为[2020-07-183 17:07:55.551]。问题是Datetimestamp中的“Day”有三个数字。如何将currentTimeMillis格式化为月日的正确格式 public String Datetimesetter(long currentTimeMillis, SimpleDateFormat dateFormat) { dateFormat = new SimpleDateFormat(&qu
currentTimeMillis
格式化为月日的正确格式
public String Datetimesetter(long currentTimeMillis, SimpleDateFormat dateFormat) {
dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS.SSS");
// Create a calendar object that will convert the date and time value in milliseconds to date.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentTimeMillis);
return dateFormat.format(calendar.getTime());
}
对我有效的解决方案:
请访问链接。这适用于您支持API级别26的应用程序(对
java.time的本机支持)或您愿意/允许使用相同功能的应用程序
然后您可以使用正确/匹配的模式(考虑三位数天数的模式),如下所示:
public static void main(String[] args) {
// mock / receive the datetime string
String timestamp = "2020-07-183 17:07:55.551";
// create a formatter using a suitable pattern (NOTE the 3 Ds)
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-DDD HH:mm:ss.SSS");
// parse the String to a LocalDateTime using the formatter defined before
LocalDateTime ldt = LocalDateTime.parse(timestamp, dtf);
// and print its default String representation
System.out.println(ldt);
}
哪个输出
2020-07-01T17:07:55.551
所以我猜183号那天实际上是7月1日。您的日期格式不正确
dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS.SSS");
换成这个
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS.SSS");
您希望以哪种格式输出?如果可以,请避免使用java.util.Date
。。。您的应用程序支持的最低API级别是多少?一天中的3位数字很可能是一年中的某一天……基本上,您需要仔细阅读SimpleDateFormat
的文档。您的模式是错误的-您可能是指yyyy-MM-dd HH:MM:ss.SSS
,但我同意deHaar的观点,即最好尽可能避免使用java.util.Date。这里的各种解决方案-->这个类是与java最早版本捆绑在一起的糟糕的日期时间类的一部分,多年前被java.time类取代。对于现代解决方案,请参见.FYI,由于新功能:.deHaar,我确信OP希望将纪元后的毫秒数格式化为非常传统的日期-时间字符串,因此似乎不再需要在早期Android上使用后端端口来支持。至少我认为问题中的字符串是格式化的观察结果(而不是程序的输入)。我已经编辑了问题文本以同意问题中的代码,我希望它更清晰(并且与OP的意图一致)。正如您所知,我对java.time的使用表示赞赏。@OleV.V。谢谢你的评论,很抱歉耽搁了,我在我的移动设备上读到了评论,想稍后再回答,但就是忘了。在重读了这个问题之后,我现在认为你是对的,我的回答没有完全涵盖问题的所有方面。这个答案似乎适合接受,但正如你所说,它并没有完全满足要求。是的,我看到答案被接受了。也许我错了@MdBasha,如果只是出于我们的好奇,你能澄清一下吗?当然,我会发布我这边@OleV.V的实现步骤。