Tag: 日期

C初学者帮助:任何给定日期的星期几

提示符是:实现一个函数,该函数读入包含日历日期的文本描述的字符串,并打印出相应的星期几(星期一到星期日)。 此函数的两种有效输入格式为: 毫米/日/年 示例:03/04/2014 输出:星期二 月dd,yyyy 示例:2014年3月4日 输出:星期二 其中dd是数字日,mm是数字月,yyyy是年份,Month是月份的名称。 所有日期和月份都使用两位数指定(即3月,使用03而不是3)。 在第二种有效格式中,Month和dd之间以及dd和yyyy之间有一个空格。 为了获得此任务的全部功劳,您的程序应以正确的格式打印出正确的一周中的任何输入。 所以到目前为止,我能够获得每一天的正确日子,除了2005年的2013年2017年等等……他们总是落后一天,我注意到它每4年走一次趋势天最后一天落后。 我不确定什么是错的。 这是因为我每年使用365.25的方法是错误的吗? 我的代码: #include int main() { int month,day1,day2,totdays,year,dm,dn,leap,rmd; printf(” “); scanf(“%d/%d/%d”,&month,&day1,&year); if(((year%4==0) && (year%100!=0)) || (year%400==0)) { if(month==1) dm=0; if(month==2) dm=31; if(month==3) dm=60; if(month==4) dm=91; if(month==5) dm=121; if(month==6) dm=152; if(month==7) dm=182; if(month==8) dm=213; if(month==9) dm=244; if(month==10) dm=274; if(month==11) dm=305; if(month==12) dm=335; […]

C初学者编程帮助日历代码更新

实现打印给定月份和年份的日历的function。 首先,提示用户: 输入月份和年份: 一旦用户输入有效输入(由空格分隔的两个整数),以与UNIX cal命令的输出类似的格式打印日历。 例如,如果用户输入03 2014,则输出应为: View post on imgur.com 我的代码的更新版本,对于stackflow的新缩进感到抱歉,它不会让我只是复制并粘贴我的代码说我有缩进问题: #include int main(){ int year; int month, day; int days_in_month[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char *months[]= { ” “, ” January”, ” February”, ” March”, ” April”, ” May”, ” June”, ” July”, ” August”, ” September”, ” October”, ” November”, ” December” }; printf(“Please enter a […]

用c语言表示日期为dd / mm / yy

# include int main(){ int d1, d2, m1, m2, year; printf(“Enter date (dd/mm/yy): “); scanf(“%d,%d/%d,&,d/%d”, &d1,&d2,&m1,&m2,&year); **大家好我是c编程的新手,所以我试着将日期作为dd / mm / yy格式,但是当我这样写它时,它给出了一个输出为191/033/0的19/07/14输入我该如何解决这个问题? **

AC程序,检查输入的日期是否有效

我被要求纠正一个程序,该程序检查用户输入的日期是否合法在C中。我尝试写它但我猜逻辑是不正确的。 //Legitimate date #include void main() { int d,m,y,leap; int legit = 0; printf(“Enter the date\n”); scanf(“%i.%i.%i”,&d,&m,&y); if(y % 400 == 0 || (y % 100 != 0 && y % 4 == 0)) {leap=1;} if (m<13) { if (m == 1 || (3 || ( 5 || ( 7 || ( 8 || ( […]

如何为每月的几天提供后缀?

我需要一个函数来在“ Wednesday June 5th, 2008 ”中显示像“ th ”这样的文本时返回几天的后缀。 它只需要工作数字1到31(不需要错误检查)和英语。

如何以编程方式将时间从一个时区转换为另一个时区?

GNU date命令的信息页面包含以下示例: 例如,使用GNU date命令,您可以回答“当巴黎时钟显示2004年10月31日上午6:30时纽约几点钟的时间?” 通过使用以“TZ =”Europe / Paris“’开头的日期,如以下shell脚本中所示: $ export TZ=”America/New_York” $ date –date=’TZ=”Europe/Paris” 2004-10-31 06:30′ Sun Oct 31 01:30:00 EDT 2004 在此示例中,’ – date’操作数以其自己的’TZ’设置开头,因此该操作数的其余部分根据’Europe / Paris’规则处理,将字符串2004-10-31 06:30视为它在巴黎。 但是,由于date命令的输出是根据整个时区规则处理的,因此它使用纽约时间。 (2004年巴黎通常比纽约早6个小时,但这个例子指的是一个短暂的万圣节时期,当时差距为5小时。) 我试图在C语言中以编程方式完成基本相同的事情,而无需数百万次调用date程序。 基本上我正在寻找一种方法,在一个时区中采取任意日期和时间,并将其转换为另一个时区中的等效日期和时间,可以直接转换为UTC转换。 只要我可以使用标准函数( strftime / strptime / mktime / etc)操作它们,我就不关心输入和输出时间的格式。 date程序似乎使用coreutils包内部的复杂例程来实现这一点,我正在寻找一种方法,使用标准POSIX / Linux例程或外部库在C中执行此操作。 我看了很多看起来很有希望的zoneinfo ,但我找不到任何有用的库。

C库解析大致日期

我正在寻找date.js date.parse()的普通C对应物。 也就是说,将“一周前”或“昨天”理解为输入的东西。 只有英语才行。 注意:库不应该在GPL下许可,因此Git的date.c或GNU date -d解析器不会。 顺便说一句,如果你想知道为什么我不能坐下来编写代码,那么去看看提到的库的来源……

mktime返回错误的时间戳(关闭整整一个月)

我使用mktime从当前本地时间创建一个unix时间戳: #include int _tmain(int argc, _TCHAR* argv[]) { struct tm info; // 16.05.2014 info.tm_mday = 16; info.tm_mon = 5; info.tm_year = 114; // Years since 1900 // 08:00:00 Uhr info.tm_hour = 8; info.tm_min = 0; info.tm_sec = 0; // Convert to Unix timestamp info.tm_isdst = -1; time_t timestamp = mktime(&info); printf(“Timestamp: %i”, timestamp); } 这给了我: […]

C ++ mktime返回随机日期

我正在尝试将日期字符串转换为time_t ,但mktime()返回看似随机的日期: string datetime = “2014-12-10 10:30”; struct tm tmInfo; strptime(datetime.c_str(), “%Y-%m-%d %H:%M”, &tmInfo); tmInfo.tm_isdst = 0; time_t eventTime = mktime(&tmInfo); eventTime的范围从20世纪70年代到2030年代。 tmInfo结构保存正确的日期,因此必须在mktime()中发生错误。 什么出错的想法?

将日期/时间转换为时间戳,反之亦然

我试图在C中实现两个简单的转换器,日期/时间到时间戳,反之亦然,没有任何依赖于时间库例程,如mktime等。 时间戳以秒为单位,日期/时间结构采用以下格式: unsigned char year:0到99(表示范围2000到2099) unsigned char month:1到12 unsigned char day:1到31 unsigned char小时:0到23 unsigned char分钟:0到59 unsigned char second:0到59 我想对dt2ts转换器有第二个意见(假设输入是合法的): unsigned int dt2ts(const dt_t* dt) { static unsigned short days[] = {0,31,59,90,120,151,181,212,243,273,304,334}; return ((((dt->year*365+dt->year/4)+days[dt->month-1]+dt->day)*24+dt->hour)*60+dt->minute)*60+dt->second; } 除此之外,我将非常感谢帮助完成ts2dt转换器: void ts2dt(unsigned int ts,dt_t* dt) { dt->second = ts%60; ts /= 60; dt->minute = ts%60; ts /= 60; dt->hour = […]