如何将json字符串日期转换为android中的Date格式

时间:2016-06-02 10:17:44

标签: android

{

"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
}

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

3 个答案:

答案 0 :(得分:3)

TL;博士

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

详细

  

json字符串时间

没有“JSON时间”这样的东西。你所拥有的是标准ISO 8601格式的字符串。

结尾的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框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

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

从哪里获取java.time类?

答案 1 :(得分:1)

试试这个

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();  
}

答案 2 :(得分:1)

试试这个。

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