Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/124.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++ - Fatal编程技术网

C++ C++;按输入日期获取哪一天

C++ C++;按输入日期获取哪一天,c++,C++,如何通过输入日期获取哪一天 输入日期示例:15-08-2012 如何知道星期一、星期二或哪天使用C++?< /P> 我试图从一个月的可用日期中省略周末,因此如果我输入例如2012年8月,我想检查哪一天是星期六,哪一天是星期天,这样我就可以从我的程序的可用日期中省略它 我尝试获取一个月天数的代码: if (month == 4 || month == 6 || month == 9 || month == 11) { maxDay = 30; } else if (month == 2)

如何通过输入日期获取哪一天

输入日期示例:15-08-2012

如何知道星期一、星期二或哪天使用C++?< /P> 我试图从一个月的可用日期中省略周末,因此如果我输入例如2012年8月,我想检查哪一天是星期六,哪一天是星期天,这样我就可以从我的程序的可用日期中省略它

我尝试获取一个月天数的代码:

if (month == 4 || month == 6 || month == 9 || month == 11)
{
    maxDay = 30;
}
else if (month == 2)
//{
//  bool isLeapYear = (year% 4 == 0 && year % 100 != 0) || (year % 400 == 0);
//  if (isLeapYear)
//  { 
//   maxDay = 29;
//  }
//else
{
    maxDay = 28;
}
我想知道的下一件事是在那个月,哪一天是周末,所以我可以从结果中忽略它。

#include
#include <ctime>

std::tm time_in = { 0, 0, 0, // second, minute, hour
        4, 9, 1984 - 1900 }; // 1-based day, 0-based month, year since 1900

std::time_t time_temp = std::mktime( & time_in );

// the return value from localtime is a static global - do not call
// this function from more than one thread!
std::tm const *time_out = std::localtime( & time_temp );

std::cout << "I was born on (Sunday = 0) D.O.W. " << time_out->tm_wday << '\n';
std::tm time_in={0,0,0,//秒,分钟,小时 4, 9, 1984 - 1900 }; // 自1900年起的1天、0月、年份 std::time\u t time\u temp=std::mktime(&time\u in); //localtime的返回值是静态全局-不调用 //此函数来自多个线程! std::tm const*time\u out=std::localtime(&time\u temp);
std::cout您应该使用
mktime
ctime
并提取
tm
结构的
tm\u wday
字段。可以保证
mktime
不需要该字段,因此您可以填充骨架
tm
结构,对其进行处理并将其分解回完整的结构:

#include <ctime>

std::tm t = {};
t.tm_mday = 15;
t.tm_mon = 8;
t.tm_year = 2012;

std::tm * p = std::localtime(std::mktime(&t));

// result is p->tm_wday
#包括
std::tm t={};
t、 tm_mday=15;
t、 tm_mon=8;
t、 tm_年=2012年;
std::tm*p=std::localtime(std::mktime(&t));
//结果是p->tm\U wday
#包括
#包括
int main()
{
char*str=“15-08-2012”;
struct-tm;
if(strtime(str,“%d-%m-%Y”,&tm)==NULL){
/*格式不好*/
}
字符缓冲区[80];
strftime(缓冲区,80,“天为%a”,&tm);
放置(缓冲);
返回0;
}
我会使用
mktime()
。给定日期、月份和年份,填写
tm
,然后 在其上调用
mktime

tm timeStruct = {};
timeStruct.tm_year = year - 1900;
timeStruct.tm_mon = month - 1;
timeStruct.tm_mday = day;
timeStruct.tm_hour = 12;    //  To avoid any doubts about summer time, etc.
mktime( &timeStruct );
return timeStruct.tm_wday;  //  0...6 for Sunday...Saturday

这是一个更简单、可能更好的实现,因为它不需要任何额外的库导入。 返回的结果是0到6之间的整数(星期日、星期一、星期二、星期六)

#包括
星期五的整数天(整数d,整数m,整数y){
静态int t[]={0,3,2,5,0,3,5,1,4,6,2,4};
y-=m<3;
回报率(y+y/4-y/100+y/400+t[m-1]+d)%7;
}
/*驱动程序功能测试上述功能*/
int main(){
int day=星期五(2013年10月23日);
//上述报表为2013年10月23日的工作日
//星期日(,)

std::可能不是完全相同的,但足以回答以下问题:这是您的整个“月内天数”代码吗?当月==1时会发生什么?您是否有可以使用的“tm”类型变量?如果是这样,您可以使用strftime将其转换为“星期一”之类的单词,然后查看日期是否==“星期日”| |“星期六”文档:你不能像这样可靠地初始化<代码> TM >代码>。标准指定结构的成员,而不是它们的顺序。<代码> StrutTime/Cux>是UNIX扩展,不是标准C++的一部分。不能像这样可靠地初始化<代码> TM <代码>。成员定义的顺序是未指定。对于那些想知道的人,您可以找到有关此的更多详细信息。
tm timeStruct = {};
timeStruct.tm_year = year - 1900;
timeStruct.tm_mon = month - 1;
timeStruct.tm_mday = day;
timeStruct.tm_hour = 12;    //  To avoid any doubts about summer time, etc.
mktime( &timeStruct );
return timeStruct.tm_wday;  //  0...6 for Sunday...Saturday
#include <iostream>

int dayofweek(int d, int m, int y){
    static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
    y -= m < 3;
    return ( y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

/* Driver function to test above function */
int main(){
    int day = dayofweek(23, 10, 2013); 
    // Above statement finds the week day for 10/23/2013
    //dayofweek(<day in month>,<month>,<year>)
    std::cout << day;
    return 0;
}