Java 将日期和时间字符串转换为特定格式的日期
我正在开发一款Android应用程序 我从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
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)谢谢,我将在本项目和未来项目中考虑它。谢谢,我将在本项目和未来项目中考虑它。