2020-04-03 20:17:46转换为“ yyyy-MM-dd'T'HH:mm:ss”格式

时间:2020-04-08 19:26:47

标签: java jodatime simpledateformat java.util.date

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

5 个答案:

答案 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有什么特殊的原因吗?