转换为日期时间格式“ 2020-02-11T17:26:31-05:00”

时间:2020-02-19 12:27:40

标签: java datetime-format

您好,我无法理解我们需要使用哪种时间格式来解析此日期2020-02-11T17:26:31-05:00,我尝试使用日期格式器和简单日期格式,但无法使用

日期采用这种格式-> 2020-02-11T17:26:31-05:00 我无法确定此日期的类型

以下是我尝试过的代码段,但其抛出异常

DateTimeFormatter responseFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss-SSSXXX'Z'",
                              Locale.ENGLISH);
                     responseDateTime = LocalDateTime.parse(otmmResponseDate, responseFormatter);

2 个答案:

答案 0 :(得分:4)

请注意,您的日期字符串中有一个偏移量-05:00。因此,您的字符串不代表LocalDateTime,而是OffsetDateTime,应由OffsetDateTime.parse解析(并非所有内容都是LocalDateTime!):

// the format is ISO 8601, so it can be parsed directly without a DateTimeFormatter
OffsetDateTime odt = OffsetDateTime.parse("2020-02-11T17:26:31-05:00");

如果只需要本地日期时间 part ,则可以在之后致电toLocalDateTime

LocalDateTime ldt = odt.toLocalDateTime();

答案 1 :(得分:1)

这是日期时间static void deleter_a(A* a) { delete a; },其中包含负五小时的偏移量。您甚至不必直接使用A,因为将其解析为B即可:

class B {
public:
    B() {};  // or = default
    ~B() {}; // or = default
    void addA(const std::string name, const float num);

private:
    static void deleter_a(A* a) { delete a; }
    using deleter_a_t = void(A*);
    std::vector<std::unique_ptr<A, std::function<deleter_a_t>>> vecA;
};

void B::addA(const std::string name, const float num) {
    vecA.push_back(std::unique_ptr<A, std::function<deleter_a_t>>{
            new A(name, num), std::function<deleter_a_t>{deleter_a}
    });
}

输出:

String

这并不是说它使用DateTimeFormatter且输出没有偏移。