代码之家  ›  专栏  ›  技术社区  ›  mvasco

将日期和时间字符串转换为特定格式的日期

  •  0
  • mvasco  · 技术社区  · 7 年前

    我正在开发一款Android应用程序。

    我从 JSON 文件

    fecha_reporte = "2017-12-17" 
    
    hora_reporte = "23:51:00"
    

    我需要将这两个字符串转换为一个日期变量,然后我需要用它进行一些计算。

    这就是我目前的情况:

    String fecha = fecha_reporte + " " + hora_reporte;
    
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd H:m:s");
    String dateInString = fecha;
    
    try {
    
        Date date2 = formatter.parse(dateInString);
        System.out.println(date2);
        System.out.println(formatter.format(date2));
        Log.d("DURACION","DURACION REPORTE: calculado: "+date2);
    
    } catch (ParseException e) {
        e.printStackTrace();
    }
    

    输出为日期,但格式如下:

    Sun Dec 17 23:51:00 GMT-07:00 2017
    

    我需要以下格式: 2017-12-17 23:51:00

    1 回复  |  直到 7 年前
        1
  •  2
  •   Basil Bourque    7 年前

    Java语言时间

    您使用的旧日期时间类很麻烦,现在是遗留的。避开他们。现在被java所取代。时间类。

    将输入字符串分析为 LocalDateTime 因为他们缺乏关于时区或UTC偏移量的信息。

    添加一个 T 符合标准ISO 8601格式。

    String input = "2017-12-17" + "T" + "23:51:00" ;
    LocalDateTime ldt = LocalDateTime.parse( input ) ;
    

    通过调用 toString 并更换 T 中间有一个空格。

    ldt.toString().replace( "T" , " " ) ;
    

    或者,使用生成自定义格式的字符串 DateTimeFormatter

    对于早期的Android,请参阅 三百一十个后端口 ThreeTenABP 项目。