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
C++ C++;检查日期是否有效_C++_Date_Time - Fatal编程技术网

C++ C++;检查日期是否有效

C++ C++;检查日期是否有效,c++,date,time,C++,Date,Time,是否有任何函数检查给定日期是否有效? 我不想从头开始写任何东西 e、 g.32/10/2012无效 2010年10月10日是有效的如果您的字符串始终采用该格式,最简单的方法是将字符串拆分为三个组件,填充tm结构并将其传递给mktime()。如果返回-1,则该日期无效 您还可以使用来解析它: string inp("10/10/2010"); string format("%d/%m/%Y"); date d; d = parser.parse_date(inp, format, svp); b

是否有任何函数检查给定日期是否有效? 我不想从头开始写任何东西

e、 g.32/10/2012无效
2010年10月10日是有效的

如果您的字符串始终采用该格式,最简单的方法是将字符串拆分为三个组件,填充
tm
结构并将其传递给
mktime()
。如果返回-1,则该日期无效

您还可以使用来解析它:

string inp("10/10/2010");
string format("%d/%m/%Y");
date d;
d = parser.parse_date(inp, format, svp);

boostdatetime类应该能够处理您所需要的内容。
请参见

如果日期的格式是固定的,并且您不想使用boost,则始终可以使用
ctime
标题中定义的
strtime

const char date1[] = "32/10/2012";
const char date2[] = "10/10/2012";
struct tm tm;

if (!strptime(date1, "%d/%m/%Y", &tm)) std::cout << "date1 isn't valid\n";
if (!strptime(date2, "%d/%m/%Y", &tm)) std::cout << "date2 isn't valid\n";
const char date1[]=“32/10/2012”;
const char date2[]=“2012年10月10日”;
struct-tm;

如果(!strtime(date1,“%d/%m/%Y,&tm))std::cout或当前版本,啊。是的,让我编辑我的帖子来反映这一点。谢谢你,弗雷德。或者我肯定的是当前发布的链接。:)谢谢你,弗拉德。这个值来自哪里?这是怎么回事?这是输入。我只想检查它是否有效。请记住,
strtime()
是一个非标准扩展,并非在所有系统(包括Windows)上都可用。@spencecw:确实如此。然而,包括Windows在内的大多数系统都有开源实现。此外,这也是POSIX的标准。:)什么是svp和解析器?mktime将规范化日期。例如,如果日期为负数,它将返回到上一个月,并相应地调整日期和月份成员。注意:允许时间值超出其正常范围