我有这段代码,我想把时间打印成字符串,而不是日期和时间之间的'T'字符。
String datetime4 =new StringBuilder().append(date4).append(time4).toString();
DateTime newdt=new DateTime(datetime4);
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
newdt = formatter.parseDateTime(datetime4);
System.out.println(newdt);
请注意date4
和time4
是String变量。
它会打印出来:
2017-11-04T11:23:00.000+02:00
答案 0 :(得分:2)
一种方法:
String date4 = "2017-02-02";
String time4 = "12:00:00";
//To parse it to Temporal object
DateTime dateTime = DateTime.parse(date4 +"T"+ time4);
// to output it as String in a prefered format (Thanks @Hugo)
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
如果您更喜欢Java 8,我需要使用格式化程序,LocalDateTime不会以与JodaTime相同的方式重载toString。
但不确定你为什么要这样做?似乎只是附加日期和时间就足够了?无论如何,如果你想解析你需要把它作为一个有效的日期时间格式传递到DateTime所需的日期以及如果使用Java8将它传递给LocalDateTime,那么你可以根据需要重新格式化。
String date4 = "2017-02-02";
String time4 = "12:00:00";
LocalDateTime dateTime = LocalDateTime.parse(date4 +"T"+ time4);
System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
答案 1 :(得分:1)
使用Java 8 LocalDateTime
;
LocalDateTime dateTime;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss");
DateTimeFormatter desiredFormat = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
dateTime = LocalDateTime.parse("2017-06-01T12:10:10", formatter);
System.out.println(desiredFormat.format(dateTime));
答案 2 :(得分:1)
当你这样做时:
System.out.println(newdt);
您正在打印newdt
变量,内部println
会在对象上调用toString()
方法。
由于此变量的类型为DateTime
,因此此代码输出newdt.toString()
的结果。 Datetime.toString()
方法使用包含“T”的默认格式。
如果您希望输出String
具有不同的格式,您可以执行以下操作:
System.out.println(newdt.toString("yyyy-MM-dd HH:mm:ss"));
输出将是:
2017-11-04 11:23:00
(没有“T”)
您可以将此toString
版本与DateTimeFormatter
接受的任何模式一起使用。
您还可以为所需格式创建另一个DateTimeFormatter
:
DateTimeFormatter withoutT = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(withoutT.print(newdt));
输出结果相同,由您自行选择。