【问题标题】:how to convert the json string date to Date format in android如何在android中将json字符串日期转换为日期格式
【发布时间】:2016-06-02 10:17:44
【问题描述】:

{

"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");但它不起作用。非常感谢任何帮助。

【问题讨论】:

标签: android


【解决方案1】:

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.DateCalendarSimpleDateFormat

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

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

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

从哪里获得 java.time 类?

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

      试试这个。

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

      【讨论】:

      • 仅供参考,java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 等麻烦的旧日期时间类现在已被 java.time 类所取代。在ThreeTen-Backport 项目中,大部分java.time 功能都被反向移植到Java 6 和Java 7。在ThreeTenABP 项目中进一步适用于早期的Android。见How to use ThreeTenABP…
      猜你喜欢
      • 2013-12-28
      • 2015-07-13
      • 2019-09-16
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多