java(java.util.*
或Joda api)中是否可以将“ 2020-04-03 20:17:46”转换为"yyyy-MM-dd'T'HH:mm:ss"
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.parse("2020-04-03 20:17:46")
始终提供java.text.parseException
答案 0 :(得分:4)
就您使用Java 8或更高版本而言,请使用java.time
。
看这个简单的例子:
public static void main(String[] args) {
// example datetime
String datetime = "2020-04-03 20:17:46";
// create a formatter that parses datetimes of this pattern
DateTimeFormatter parserDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// then parse the datetime with that formatter
LocalDateTime ldt = LocalDateTime.parse(datetime, parserDtf);
// in order to output the parsed datetime, use the default formatter (implicitly)
System.out.println(ldt);
// or format it in a totally different way
System.out.println(ldt.format(
DateTimeFormatter.ofPattern("EEE, dd. 'of' MMM 'at' hh-mm-ss a",
Locale.ENGLISH)
)
);
}
此输出
2020-04-03T20:17:46
Fri, 03. of Apr at 08-17-46 PM
请注意,这不考虑任何时区或偏移量,它仅表示由经过或解析的年,月,日,小时,分钟和秒组成的日期和时间,
答案 1 :(得分:3)
请勿使用java.util.*
中的Date / Time API,因为其中大多数现在是outdated。请改用java.time API。
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) throws IOException {
String strDatetime = "2020-04-03 20:17:46";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parsedDate = LocalDateTime.parse(strDatetime, formatter);
System.out.println(parsedDate);
}
}
输出:
2020-04-03T20:17:46
在https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html上了解有关DateTimeFormatter
的更多信息
答案 2 :(得分:1)
这可以帮助您吗? http://tutorials.jenkov.com/java-internationalization/simpledateformat.html
首先,您需要使用旧格式解析String,您将获得Date对象。然后使用新格式创建一个新的SimpleDateFormat,然后可以格式化Date对象。
答案 3 :(得分:1)
String dateString = "2020-04-03 20:17:46";
SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateString);
String formattedDate = output.format(date);
答案 4 :(得分:0)
它不能直接以这种方式工作,但是如果您仍然想要这样做,请执行以下过程。
使用模式“ yyyy-MM-dd HH:mm:ss”创建SimpleDateFormat对象)
使用它来解析字符串。最终,您将在两种情况下都能获得约会。对于不包含T的日期,在模式中使用T有什么特殊的原因吗?