十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#includestructdate//定义结构体类型{inty;intm;intd;};voidmain(){datedt;//定义结构体变量inti,count,mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入日期(年月日):");scanf("%d",dt.y);scanf("%d",dt.m);scanf("%d",dt.d);count=dt.d;//把dt.d计入总天数for(i=0;i2(dt.y%4==0dt.y%100!=0||dt.y%400==0))count+=1;//如果是闰年,则要把3月份和3月份以后的总天数加1printf("这一日是这一年的第%d天\n",count);}
目前创新互联已为成百上千家的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、秭归网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
#include stdio.h
#include time.h
int main() {
int year, month, day;
printf("Enter a date (yyyy-mm-dd): ");
scanf("%d-%d-%d", year, month, day);
struct tm tm = {0};
tm.tm_year = year - 1900;
tm.tm_mon = month - 1;
tm.tm_mday = day;
tm.tm_isdst = -1;
time_t t = mktime(tm);
char* weekday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
printf("%s\n", weekday[localtime(t)-tm_wday]);
return 0;
}
在这段代码中,使用了 time 库中的 mktime 函数和 localtime 函数来将日期转换为时间戳,并使用 tm_wday 字段来计算日期是星期几。
struct tm *localtime( const time_t *timer );
struct tm *_localtime32( const __time32_t *timer);
struct tm *_localtime64( const __time64_t *timer );
在struct tm结构体中有相应的时间信息。
其MSDN中的结构属性为: tm_hour Hours since midnight (0–23) tm_isdst Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown. The C run-time library assumes the United States' rules for implementing the calculation of Daylight Saving Time (DST). tm_mday Day of month (1–31) tm_min Minutes after hour (0–59) tm_mon Month (0–11; January = 0) tm_sec Seconds after minute (0–59) tm_wday Day of week (0–6; Sunday = 0) tm_yday Day of year (0–365; January 1 = 0) tm_year Year (current year minus 1900) 操作方法
stringdate( string format [, int timestamp] )
返回将整数 timestamp 按照给定的格式字串而产生的字符串。换句话说,timestamp 是可选的,默认值为time()。
提示: 自 PHP 5.1.0 起有几个有用的常量可用作标准的日期/时间格式来指定 format 参数。
注: 要将字符串表达的时间转换成时间戳,应该使用strtotime()。此外一些数据库有一些函数将其时间格式转换成时间戳(例如 MySQL 的UNIX_TIMESTAMP函数)。
表格1. 格式字串可以识别以下 format参数的字符串 format 字符 说明 返回值例子 日 --- --- d 月份中的第几天,有前导零的 2 位数字 01 到 31 D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun j 月份中的第几天,没有前导零 1 到 31 l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday N ISO-8601格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天) S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用 w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六) z 年份中的第几天 0 到 366 星期 --- --- W ISO-8601 格式中每周从星期一开始 例如:42(当年的第 42 周) 月 --- --- F 月份,完整的文本格式,例如 January 或者 March January 到 December m 数字表示的月份,有前导零 01 到 12 M 三个字母缩写表示的月份 Jan 到 Dec n 数字表示的月份,没有前导零 1 到 12 t 给定月份所应有的天数 28 到 31 年 --- --- L 是否为闰年 如果是闰年为 1,否则为 0 o ISO-8601 格式年份数字,这和 Y 的值相同. Examples: 1999 or 2003 Y 4 位数字完整表示的年份 例如:1999 或 2003 y 2 位数字表示的年份 例如:99 或 03 时间 --- --- a 小写的上午和下午值 am 或 pm A 大写的上午和下午值 AM 或 PM B Swatch Internet 标准时 000 到 999 g 小时,12 小时格式,没有前导零 1 到 12 G 小时,24 小时格式,没有前导零 0 到 23 h 小时,12 小时格式,有前导零 01 到 12 H 小时,24 小时格式,有前导零 00 到 23 i 有前导零的分钟数 00 到 59 s 秒数,有前导零 00 到 59 时区 --- --- e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores I 是否为夏令时 如果是夏令时为 1,否则为 0 O 与格林威治时间相差的小时数 例如:+0200 T 本机所在的时区 例如:EST,MDT Z 时差偏移量的秒数。 -43200 到 43200 完整的日期/时间 --- --- c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00 r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200 U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见time() 格式字串中不能被识别的字符将原样显示。Z 格式在使用gmdate()时总是返回 0。 例子 1.date()例子
?php// 设定要用的默认时区。自 PHP 5.1 可用date_default_timezone_set('UTC');// 输出类似:Mondayecho date("l");// 输出类似:Monday 15th of August 2005 03:12:46 PMecho date('l dS \of F Y h:i:s A');// 输出:July 1, 2000 is on a Saturdayecho "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));/* 在格式参数中使用常量 */// 输出类似:Mon, 15 Aug 2005 15:12:46 UTCecho date(DATE_RFC822);// 输出类似:2000-07-01T00:00:00+0000echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));? 在格式字串中的字符前加上反斜线来转义可以避免它被按照上表解释。如果加上反斜线后的字符本身就是一个特殊序列,那还要转义反斜线。