时间处理:计算下一天日期,如输入"2004/12/31"(注释2014年12月31日),则输出"2005/1/1".
/*
============================================================================
Name : Exercise.c
Author : haier
Version : 0.01
Copyright : Your copyright notice
Description : Ansi-style, Compile by Code:Blocks, Platform Linux
============================================================================
*/ /*
思路:首先求出输入时间到1970-1-1总秒数,然后加上一天时间后转换成日历时间并输出。
*/ #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h> #define SECONDS_PER_DAY (60*60*24) struct date
{
unsigned year;
unsigned month;
unsigned day;
} myDate; void nextDay(struct date myDate)
{
struct tm time,*tm_ptr;
time_t seconds; /*填充struct tm*/
time.tm_year = myDate.year - 1900;
time.tm_mon = myDate.month - 1;
time.tm_mday = myDate.day;
time.tm_hour = 12; //默认为该日12:00:00
time.tm_min = 0;
time.tm_sec = 0;
seconds=mktime(&time)+SECONDS_PER_DAY; //转换tm结构为time_t类型值,并加一天 /*转换并打印日期*/
tm_ptr = gmtime(&seconds);
printf("%d/%d/%d\n",tm_ptr->tm_year+1900, tm_ptr->tm_mon+1, tm_ptr->tm_mday);
} int main()
{
char strTime[20];
char *p;
int inputTimes=3; /*输入处理,允许输入3次*/
do
{
inputTimes--;
printf("Please input the date(YYYY/MM/DD) : ");
scanf("%s",strTime); /*转换时间字符串*/
p = strtok(strTime, "/");
myDate.year=atoi(p);
p = strtok(NULL, "/");
myDate.month=atoi(p);
p = strtok(NULL, "/");
myDate.day=atoi(p); if(myDate.year<1970 || myDate.month<=0 || myDate.month>12 || myDate.day<=0 || myDate.day >31)
{
printf("error in input, please try again !\n");
}
else
{
break;
} }while(inputTimes>0); if(inputTimes>0)
{
nextDay(myDate);
}
return 0;
}
运行示例:

时间处理:计算下一天日期,如输入"2004/12/31"(注释2014年12月31日),则输出"2005/1/1".的更多相关文章
- (Java) 2014年1月1日减一个月涉及时间与字符的转换
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- OpenJudge计算概论-Tomorrow never knows【输入日期计算下一天的日期】
/*====================================================================== Tomorrow never knows? 总时间限制 ...
- python关于时间的计算,time模块
import time, datetime # time.time 返回当前时间的时间戳(1970纪元后经过的浮点秒数)(格林尼治时间). # 1分钟60秒,1小时3600秒,1天86400秒. pr ...
- 4月17日 (PS:由于时间问题,现在才发,望老师见谅)疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜
疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜 会议内容: 组员依次汇报自己的工作进度,并且提出自己在进行任务的过程中遇到的问题,是否解决以及解决办法. 以下 ...
- 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
- c/c++在windows下获取时间和计算时间差的几种方法总结 【转】
http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...
- c和c++在windows下获取时间和计算时间差的方法总结
c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...
- c# 计算两日期的工作时间间隔(排除非工作日)及计算下一个工作时间点.
一个日期段如工作时间为 8:00 至 17:00 public class TimeHelper { /// <summary> /// 计算时间间隔 /// </summary&g ...
- java计算下一个整5分钟时间点
需求背景 我的需求是获取当前时间之后的下一个"整5分钟时间点". 首先,那么何为"整5分钟时间点"? 满足以下两个条件的时间: 分钟数等于以下时间中的一个,且秒 ...
随机推荐
- Winform 学生管理系统增删改查
数据库: create database adonet go use adonet go create table xue ( code ), name ), sex bit, birth datet ...
- js 提示条
js: var Persen = { timeUptopBar:function(fun) { var obj = $('.top-alert'); obj.fadeOut(1500,function ...
- 一些常见的js问题总结
- @JsonInclude(JsonInclude.Include.NON_NULL) 加在对象上
@JsonInclude(JsonInclude.Include.NON_NULL) public class ViewWorkermessage implements Serializable { ...
- unity中Android环境变量配置
http://www.cnblogs.com/windytrees/p/7533477.html
- 安装FP
一.安装Oracle 11.2 64-bit数据库 1.安装数据库软件并将SEINESCM数据库还原到服务器上, 2.配置监听和TNS信息 二.安装数据库32位客户端(为SSIS配套使用).安装ORA ...
- Android学习路-activity活动
activity即活动,是一种包含用户界面的组件,用于与用户进行交换 创建activity类 1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInsta ...
- vue.js 三种方式安装(转)
https://blog.csdn.net/m0_37479246/article/details/78836686
- jxls2 java.lang.NegativeArraySizeException
某个单元格使用jx:each报这个错误. 内部代码,创建一个二维数组时,传了一个负值进去 解决办法 将这个单元格删除,重新编写批注
- UA判断跳转
<script type="text/javascript"> UA = navigator.userAgent.toLowerCase(); url = window ...