如何在android中将json字符串date转换为date格式



{

"time_slots": [
{
"id": 1,
"from_time": "2000-01-01T09:00:00.000Z",
"to_time": "2000-01-01T10:00:00.000Z",
"created_at": "2016-05-27T08:09:05.979Z",
"updated_at": "2016-05-27T08:09:05.979Z",
"status": true
},
{
"id": 2,
"from_time": "2000-01-01T10:00:00.000Z",
"to_time": "2000-01-01T11:00:00.000Z",
"created_at": "2016-05-27T08:17:43.121Z",
"updated_at": "2016-05-27T08:17:43.121Z",
"status": true
},
{
"id": 3,
"from_time": "2000-01-01T13:00:00.000Z",
"to_time": "2000-01-01T14:00:00.000Z",
"created_at": "2016-05-27T08:18:06.251Z",
"updated_at": "2016-05-27T08:18:06.251Z",
"status": true
},
{
"id": 4,
"from_time": "2000-01-01T14:00:00.000Z",
"to_time": "2000-01-01T15:00:00.000Z",
"created_at": "2016-05-27T08:18:34.752Z",
"updated_at": "2016-05-27T08:18:34.752Z",
"status": true
}

]}任何人都可以帮助如何在android中将json字符串时间转换为时间格式吗。我尝试使用简单日期格式SimpleDateFormat("yyyy-mm-ddTh:m:s")进行转换;但它不起作用。非常感谢您的帮助。

tl;dr

Instant.parse( "2016-05-27T08:17:43.121Z" )

详细信息

json字符串时间

没有"JSON时间"这样的东西。您所拥有的是标准ISO8601格式的字符串。

末尾的Z发音为Zulu,意思是UTC。

android中的时间格式。

没有"Android时间格式"这样的东西。您可以使用任何适合用户人类语言和文化规范的格式。请参阅DateTimeFormatter类,特别是它的ofLocalized…方法。

SimpleDateFormat("yyyy-mm-ddTh:m:s")

该类是与最早版本的Java捆绑在一起的麻烦的旧日期-时间类的一部分。它们在几年前被java.time类所取代。

在解析/生成字符串时,java.time类默认使用标准ISO 8601格式。因此,无需指定格式化模式。

Instant instant = Instant.parse( "2016-05-27T08:17:43.121Z" ) ;

要在某个地区(时区)的人使用的挂钟时间中看到相同的时刻,请应用ZoneId来获得ZonedDateTime对象。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;   // Always use proper time zone names in `Continent/Region` format, never pseudo-zones like `PDT`, `CST`, `IST`, etc. 
ZonedDateTime zdt = instant.atZone( z ) ;  // Same moment, same point on the timeline, different wall-clock time.

关于java.time

java.time框架构建在Java8及更高版本中。这些类取代了诸如java.util.DateCalendar和&SimpleDateFormat

现在处于维护模式的JodaTime项目建议迁移到java.Time类。

要了解更多信息,请参阅Oracle教程。并在Stack Overflow中搜索许多示例和解释。规范是JSR310。

您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,也不需要java.sql.*类。

从哪里获得java.time类?

  • Java SE 8Java SE 9和更高版本
    • 内置
    • 标准Java API的一部分,带有捆绑实现
    • Java 9添加了一些小功能和修复程序
  • Java SE 6Java SE 7
    • 大部分Java.time功能都是向后移植到Java 6&7英寸ThreeTen背包
  • Android
    • java.time类的Android捆绑包实现的后续版本
    • 对于早期的Android(<26),ThreeTenABP项目适用于ThreeTen Backport(如上所述)。请参阅如何使用ThreeTenABP…

试试这个

String dt_str = "2000-01-01T13:00:00.000Z";  
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");  
try {  
Date date = format.parse(dt_str);  
System.out.println(date);  
} catch (ParseException e) {  
// TODO Auto-generated catch block  
e.printStackTrace();  
}

试试这个。

SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'");
Date myDate = myFormat.parse("your date string here");

最新更新