Dateformat给出了不同的时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dateformat给出了不同的时间相关的知识,希望对你有一定的参考价值。
我在字符串“yyyy-MM-dd't'HH:mm:ss.SSSZ”中有两个日期格式,第二个在长“yyyyMMddHHmmssSSS”中。我想把它转换成这种格式“yyyy-MM-dd HH:mm:ss”,它的转换成功但是当我打印date.getTime()时
首先 - > 1416490009109
第二 - > 20141120121211800
码:
private DateTimeFormatter formater,formater1;
private SimpleDateFormat formate,formate1,formate2;
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
String pattern1 = "yyyy-MM-dd HH:mm:ssZ";
//String pattern = "yyyy-MM-dd HH:mm:ss";
formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formate1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
formate2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
formater = DateTimeFormat.forPattern(pattern);
formater1 = DateTimeFormat.forPattern(pattern1);
String dateTime = "2011-11-20'T'11:42:12.672+00:00";
long savePoint = 20141120114212672L;
try {
datetime = formater.parseDateTime(dateTime);
date = datetime.toDate();
//Log.d("android: ", "Date formate: "+datetime);
dt = formate.format(date.getTime());
Log.d("Android: ", "date Keys1: "+date.getTime());
} catch (Exception e) {
Log.d("Android: ", "Error: "+e);
}
第二个
try {
String[] tzone = dateTime.split("[+]");
String times = formate1.format(Long.parseLong(savePoint));
datetime = formater.parseDateTime(times+"+"+tzone[tzone.length-1]);
date = datetime.toDate();
dt = formate.format(date.getTime());
} catch (Exception e) {
Log.d("Android:", "Error: "+e);
}
Count from epoch
第一个输入似乎是UTC中1970年第一时刻的纪元参考的毫秒数。
使用long
将字符串解析为Integer.parseLong
。
long count = Long.parseLong( "1416490009109" ) ;
Instant instant = Instant.ofEpochMilli( count ) ;
为了更灵活,例如以各种格式生成文本,请转换为OffsetDateTime
或ZonedDateTime
。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) :
String as integer
您的第二个输入似乎是一个年,月,日,小时,分钟,秒,小数秒伪装为长整数的字符串。
String input = "20141120121211800" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMddHHmmssSSS" ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
如果确定已知,则分配时区或从UTC偏移。
OffsetDateTime odt = ldt.atOffset( ZoneOffset.UTC ) ;
Generating strings
我想把它转换成这种格式“yyyy-MM-dd HH:mm:ss”
要以所需格式从日期时间对象生成文本,请使用DateTimeFormatter
类。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) ;
String output = odt.format( f ) ;
About java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规格是JSR 310。
现在在Joda-Time的maintenance mode项目建议迁移到java.time班。
您可以直接与数据库交换java.time对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
从哪里获取java.time类?
- Java SE 8,Java SE 9,Java SE 10,Java SE 11和更高版本 - 带有捆绑实现的标准Java API的一部分。 Java 9增加了一些小功能和修复。
- Java SE 6和Java SE 7 大多数java.time功能都在ThreeTen-Backport中反向移植到Java 6和7。
- Android 更高版本的Android捆绑java.time类的实现。 对于早期的Android(<26),ThreeTenABP项目适应ThreeTen-Backport(如上所述)。见How to use ThreeTenABP…。
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。你可能会在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
使用DateFormat转换日期。这可以帮到你!
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date convertedDate = dateFormat.parse(stringDate);
如果您想在以后使用时比较日期
date1.after(date2)
要么
date1.before(date2)
更多关于日期的信息可以在https://docs.oracle.com/javase/7/docs/api/java/util/Date.html找到
以上是关于Dateformat给出了不同的时间的主要内容,如果未能解决你的问题,请参考以下文章
Butterknife 片段旋转给出 NullPointer