Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查ISO 8601日期格式是否有效 如何检查C++中的日期字符串是否为ISO 8601格式(如代码> 2018-1225T12:0:00 +04:00 )? 尝试使用strTime检查日期字符串是否为有效的ISO 8601格式,但没有给出正确的结果。_C++_Date_Format_Iso - Fatal编程技术网

检查ISO 8601日期格式是否有效 如何检查C++中的日期字符串是否为ISO 8601格式(如代码> 2018-1225T12:0:00 +04:00 )? 尝试使用strTime检查日期字符串是否为有效的ISO 8601格式,但没有给出正确的结果。

检查ISO 8601日期格式是否有效 如何检查C++中的日期字符串是否为ISO 8601格式(如代码> 2018-1225T12:0:00 +04:00 )? 尝试使用strTime检查日期字符串是否为有效的ISO 8601格式,但没有给出正确的结果。,c++,date,format,iso,C++,Date,Format,Iso,我知道的最简单的方法是使用: 这不允许闰秒,但如果您愿意在同一链接上安装我的时区支持库,它也可以这样做。它会检查无效的语法和无效的日期和时间。我知道的最简单的方法是使用: 这不允许闰秒,但如果您愿意在同一链接上安装我的时区支持库,它也可以这样做。它检查无效的语法和无效的日期和时间。< /P>请不要在C++中使用 。你能举一个例子来说明你的问题吗?@TarickWelling谢谢你的回答。我需要检查日期是否有效。我使用strTime(“2019-06-24T09:00:00Z”,%Y-%m-%dT

我知道的最简单的方法是使用:


这不允许闰秒,但如果您愿意在同一链接上安装我的时区支持库,它也可以这样做。它会检查无效的语法和无效的日期和时间。

我知道的最简单的方法是使用:


这不允许闰秒,但如果您愿意在同一链接上安装我的时区支持库,它也可以这样做。它检查无效的语法和无效的日期和时间。< /P>请不要在C++中使用<代码> <代码>。你能举一个例子来说明你的问题吗?@TarickWelling谢谢你的回答。我需要检查日期是否有效。我使用strTime(“2019-06-24T09:00:00Z”,%Y-%m-%dT%H:%m:%SZ”,&tm)来检查给定的日期对于我得到结果的上述格式是否有效。同样,我如何检查带有偏移量的日期格式“2019-06-24T09:00:00+04:00”是否有效?什么是“有效”的定义?是
2018-2-30T12:00:00:00
还是
2018-2-20T25:00:00
valid?那么
2016-12-31T23:59:60
(有闰秒)呢?@l.F.从上下文来看,OP的意思似乎很清楚,“根据ISO 8601日期格式标准有效”换句话说,如果其他库/程序期望一个“有效的ISO 8601格式日期”,他的方法是否会生成一个这些库/程序可以接受的日期?然而,我认为这个问题应该作为的副本关闭(我投票赞成重新打开它,这样它就可以重新关闭)请不要在C++中使用<代码> <代码>。你能举一个例子来说明你的问题吗?@TarickWelling谢谢你的回答。我需要检查日期是否有效。我使用strTime(“2019-06-24T09:00:00Z”,%Y-%m-%dT%H:%m:%SZ”,&tm)来检查给定的日期对于我得到结果的上述格式是否有效。同样,我如何检查带有偏移量的日期格式“2019-06-24T09:00:00+04:00”是否有效?什么是“有效”的定义?是
2018-2-30T12:00:00:00
还是
2018-2-20T25:00:00
valid?那么
2016-12-31T23:59:60
(有闰秒)呢?@l.F.从上下文来看,OP的意思似乎很清楚,“根据ISO 8601日期格式标准有效”换句话说,如果其他库/程序期望一个“有效的ISO 8601格式日期”,他的方法是否会生成一个这些库/程序可以接受的日期?然而,我认为这个问题应该作为的副本关闭(我投票赞成重新打开它,这样它就可以重新关闭)。
#include "date/date.h"
#include <iostream>
#include <sstream>

bool
is_valid(const std::string& s)
{
    using namespace std;
    using namespace date;
    istringstream in{s};
    local_seconds tp;
    in >> parse("%FT%T%Ez", tp);
    return !in.fail();
}

void
test(const std::string& s)
{
    std::cout << s << " is" << (is_valid(s) ? "" : " not") << " valid\n";
}

int
main()
{
    test("2018-12-25T12:00:00+04:00");
    test("2019-06-24T09:00:00+04:00");
    test("2018-2-30T12:00:00:00+04:00");
    test("2018-2-20T25:00:00+04:00");
    test("2016-12-31T23:59:60+04:00");
}
2018-12-25T12:00:00+04:00 is valid
2019-06-24T09:00:00+04:00 is valid
2018-2-30T12:00:00:00+04:00 is not valid
2018-2-20T25:00:00+04:00 is not valid
2016-12-31T23:59:60+04:00 is not valid