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

Java 将日期和时间字符串转换为特定格式的日期,java,android,date,datetime-format,Java,Android,Date,Datetime Format,我正在开发一款Android应用程序 我从JSON文件中获取日期字符串和时间字符串 fecha_reporte = "2017-12-17" hora_reporte = "23:51:00" 我需要将这两个字符串转换为日期变量,然后稍后我需要使用它进行一些计算 这就是我到目前为止所做的: String fecha = fecha_reporte + " " + hora_reporte; SimpleDateFormat formatter = new SimpleDateFormat

我正在开发一款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

java.time 您正在使用的旧日期时间类现在是遗留的。避开它们。现在被java.time类取代

将输入字符串解析为
LocalDateTime
,因为它们缺少有关时区或UTC偏移量的信息

添加
T
以符合标准ISO 8601格式

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

通过调用<代码> toString 生成一个字符串,在中间用一个空格替换<代码> T <代码>。< /P>

ldt.toString().replace( "T" , " " ) ;
或者,使用
DateTimeFormatter
class以自定义格式生成字符串

对于早期的Android,请参阅ThreeTen Backport和projects。

java.time 您正在使用的旧日期时间类现在是遗留的。避开它们。现在被java.time类取代

将输入字符串解析为
LocalDateTime
,因为它们缺少有关时区或UTC偏移量的信息

添加
T
以符合标准ISO 8601格式

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

通过调用<代码> toString 生成一个字符串,在中间用一个空格替换<代码> T <代码>。< /P>

ldt.toString().replace( "T" , " " ) ;
或者,使用
DateTimeFormatter
class以自定义格式生成字符串


对于早期的Android,请参阅Three Ten Backport and projects。

参考此内容,您需要在SimpleDateFormat中更改格式。您错了,
日期
没有您引用的格式。它的
toString
方法生成该格式,并且该格式不能更改(仅在
Date
的子类中,您不希望这样)。要将日期格式化为所需格式的字符串,您需要一个格式化程序及其
format
方法。你已经拥有的
SimpleDateFormat
应该可以使用。即使在Android上,你内置的
SimpleDateFormat
类是臭名昭著的麻烦和过时的
SimpleDateFormat
类,也值得考虑扔掉这个类。你在安卓系统中得到它。@OleV.V.,你是对的。我只需要从formatter中获取值。format(date2)引用此值。您需要在SimpleDataFormat中更改格式。您错了,
Date
没有您引用的格式。它的
toString
方法生成该格式,并且该格式不能更改(仅在
Date
的子类中,您不希望这样)。要将日期格式化为所需格式的字符串,您需要一个格式化程序及其
format
方法。你已经拥有的
SimpleDateFormat
应该可以使用。即使在Android上,你内置的
SimpleDateFormat
类是臭名昭著的麻烦和过时的
SimpleDateFormat
类,也值得考虑扔掉这个类。你在安卓系统中得到它。@OleV.V.,你是对的。我只需要考虑formatter的值。format(date2)谢谢,我将在本项目和未来项目中考虑它。谢谢,我将在本项目和未来项目中考虑它。