日期计算函数:已知当前日期,求过了一段时间后的日期。

2024-08-28 11:58

本文主要是介绍日期计算函数:已知当前日期,求过了一段时间后的日期。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

函数的功能是,根据当前日期,计算过了一段时间后的日期。

1. 流程图:

这里写图片描述

2.函数实现:
    /*** Method called to check if the date is valid. * short duration: unit is day. * short[] curData: current date, format is YYMMDD* byte [] expData: store the expected date, format is YYMMDD* Return value: false if fail, else succeed.*/private static boolean vGetExpectDate(short[] curDate, short duration, short [] expDate){short year;short month;short day;short days_left;short day_add = 0;// Assign the real date to year, month, day and houryear = curDate[0];month = curDate[1];day = curDate[2];day_add = duration;// days add to yearwhile(day_add > (days_left = sDaysToNextYear(year, month, day))){// come to the 1st day in 1st month of the next year.year++;month = 1;day = 1;day_add -= days_left;}// days add to monthwhile(day_add > (days_left = sDaysToNextMonth(year, month, day))){month++;day = 1;day_add -= days_left;}// days add to dayday += day_add;// store the expected date into the workbuf.expDate[0] = year;expDate[1] = month;expDate[2] = day;return true;}private static short sDaysToNextYear(byte year, byte month, byte day){byte days_Feb;byte days_month;short ret;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:days_month = 31;break;case 4:case 6:case 9:case 11:days_month = 30;break;case 2:// Here assumes the year is 20xx, so if the year is leap or not depends on the last byte xx.if(0 == (year % 4))days_month = 29;elsedays_month = 28;break;default:break;}ret = days_month - day + 1;month++;switch(month){case 2:ret += days_Feb;case 3:ret += 31;case 4:ret += 30;case 5:ret += 31;case 6:ret += 30;case 7:ret += 31;case 8:ret += 31;case 9:ret += 30;case 10:ret += 31;case 11:ret += 30;case 12:ret += 31;default:break;}return ret;}private static short sDaysToNextMonth(byte year, byte month, byte day){byte days_month;switch(month){case 1:days_month = 31;break;case 2:// Here assumes the year is 20xx, so if the year is leap or not depends on the last byte xx.if(0 == (year % 4))days_month = 29;elsedays_month = 28;break;case 3:days_month = 31;break;case 4:days_month = 30;break;case 5:days_month = 31;break;case 6:days_month = 30;break;case 7:days_month = 31;break;case 8:days_month = 31;break;case 9:days_month = 30;break;case 10:days_month = 31;break;case 11:days_month = 30;break;case 12:days_month = 31;break;default:break;}return (days_month - day + 1);}

这篇关于日期计算函数:已知当前日期,求过了一段时间后的日期。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114703

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa