/*
============================================================================
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".的更多相关文章

  1. (Java) 2014年1月1日减一个月涉及时间与字符的转换

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  2. OpenJudge计算概论-Tomorrow never knows【输入日期计算下一天的日期】

    /*====================================================================== Tomorrow never knows? 总时间限制 ...

  3. python关于时间的计算,time模块

    import time, datetime # time.time 返回当前时间的时间戳(1970纪元后经过的浮点秒数)(格林尼治时间). # 1分钟60秒,1小时3600秒,1天86400秒. pr ...

  4. 4月17日 (PS:由于时间问题,现在才发,望老师见谅)疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜

    疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜 会议内容: 组员依次汇报自己的工作进度,并且提出自己在进行任务的过程中遇到的问题,是否解决以及解决办法. 以下 ...

  5. 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  6. c/c++在windows下获取时间和计算时间差的几种方法总结 【转】

    http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...

  7. c和c++在windows下获取时间和计算时间差的方法总结

    c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...

  8. c# 计算两日期的工作时间间隔(排除非工作日)及计算下一个工作时间点.

    一个日期段如工作时间为 8:00 至 17:00 public class TimeHelper { /// <summary> /// 计算时间间隔 /// </summary&g ...

  9. java计算下一个整5分钟时间点

    需求背景 我的需求是获取当前时间之后的下一个"整5分钟时间点". 首先,那么何为"整5分钟时间点"? 满足以下两个条件的时间: 分钟数等于以下时间中的一个,且秒 ...

随机推荐

  1. deb 和 rpm 后缀文件 区别和安装

    https://blog.csdn.net/u010977122/article/details/52986217 下载一个ATOM 的deb的安装包

  2. Hibernate 再接触 基础配置 搭建Log4j环境 Junit日志环境等

    <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.aut ...

  3. git初使用总结感悟

    ####首先说说git在工作中的一般流程1.首先就是进入新公司之后,要了解公司用的是什么代码托管,比如gitlab或者github(私有库花钱) 2.找技术同时把你加入到工作项目组并给你权限(一般都是 ...

  4. 面试官提出的问题应该怎么答?(如开发中使用过EasyUI吗?)

    Jquery EasyUI是第三方基于Jquery框架开发的一款轻量级的,侧重于页面显示部分的框架,也可以称为插件. Jquery EasyUI使用比较简单,也有比较全的文档可供参考. 常用的组件就是 ...

  5. gradle 很好用的么

    Gradle 其实是很好用的 2017, Apr 14 by Tesla Ice Zhang Gradle 是一款使用 Kotlin (划掉) Groovy 编写的 JVM 构建工具,其易用性和 Ma ...

  6. 仿造mongodb的存储方式存一些假数据

    //存入数据 $data = json_encode($row); // 过滤 $data = addslashes($data); //读取数据 $falseData = stripslashes( ...

  7. SimpleAdapter用法

    [SimpleAdapter用法] public class TestSimpleAdapter extends Activity { @Override protected void onCreat ...

  8. 第七篇:Jmeter连接MySQL的测试

    .准备一个有数据表格的MySQL数据库: 2.在测试计划面板上点击浏览按钮,把你的JDBC驱动添加进来: mysql-connector-java-5.1.26-bin.jar 3.添加一个线程组-- ...

  9. 第一次登录mysql,使用任何命令都报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    问题: 使用临时密码登录成功后,使用任何myql命令,例如show databases;都提示下面的报错 ERROR 1820 (HY000): You must reset your passwor ...

  10. poj3252(组合数)

    题目链接:http://poj.org/problem?id=3252 题意:给定s.e,求[s,e]之间的Round Number的个数,RN数为二进制表示中0的个数大于1的个数的数,s.e< ...