我正在尝试使用 SimpleDateFormat.parse 方法将日期字符串解析为 Date 对象,但它在返回的最终日期中省略了"T"。我正在2015-04-15T12:55:07.365
传递这个日期字符串,并且输出中2015-04-15 12:55:07.365
。但是,所需的输出是 2015-04-15T12:55:07.365
.
为什么最终输出中的"T"被这一行省略 parsedDate = sdf.parse(transDate);
public static void main(String[] args)
{
try
{
final String pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS"; // example 2015-04-15T12:55:07.365
final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String transDate = "2015-04-15T12:55:07.365";
Date parsedDate = sdf.parse(transDate);
System.out.println("transDate:"+transDate+", parsedDate: "+parsedDate);
}
你永远不会得到你想要的输出2015-04-15T12:55:07.365
为什么?
因为您正在打印日期对象parsedDate
。Date 类有自己的 toString() 方法实现。当你打印日期对象时,这意味着它基本上打印了toString()方法实现格式。
有关详细信息,请参阅 Java 文档
System.out.println(parsedDate)
会给你Wed Apr 15 00:55:07 GMT 2015
哪个是日期对象的toString()表示形式。
您可以使用SimpleDateFormat
来解析日期并设置其格式:
SimpleDateFormat sdfParser = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
Date date = sdfParser.parse("2015-04-15T12:55:07.365");
SimpleDateFormat sdfFormatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
String formattedDate = sdfFormatter.format(date);
System.out.println(formattedDate);
// 2015-04-15T12:55:07.365
您将在此处获得所需的输出。
public static void main(String args[]) {
{
try {
String transDate = "2015-04-15T12:55:07.365";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
Date date = sdf.parse(transDate);
SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date d = sdf.parse(sdf.format(date));
String formattedTime = output.format(d);
System.out.println("transDate:" + transDate + ", parsedDate: " + formattedTime);
} catch (Exception e) {
}
}
}