Qt 计算两个日前间隔天数
某一个大神写的
改写了一点
请无视注释
//时间计算法则
/***********************************************************************************************/
bool Widget::IsLeap(int year)
{
return (year % 4 ==0 || year % 400 ==0) && (year % 100 !=0); //判断是否是软年
}
bool Widget::StringToDate(QString date ,int& year, int& month, int& day) //数据解析
{
year = date.mid(0,4).toInt(); //数据截取
month = date.mid(4,2).toInt(); //数据截取
day = date.mid(6,2).toInt(); //数据截取 int DAY[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化12个月份的数据
if(IsLeap(year)) //如果是闰年,那么将2月的数据更新为29天
{
DAY[1] = 29;
}
return year >= 0 && month<=12 && month>0 && day<=DAY[month-1] && day>0; //日了狗了,写还不说给写个好的,这漏洞,差点出人命 //年天算法,判断数据解析是否符合日期规格
}
int Widget::DayInYear(int year, int month, int day)
{
int DAY[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeap(year))
DAY[1] = 29;
for(int i=0; i<month - 1; ++i)
{
day += DAY[i];
}
return day;
}
int Widget::DaysBetween2Date(QString date1, QString date2) //主调函数
{
//取出日期中的年月日
int year1, month1, day1;
int year2, month2, day2;
if(!StringToDate(date1, year1, month1, day1) || !StringToDate(date2, year2,month2,day2)) //调用截取函数
{
return -1; //如果截取信息失败,那么将返回-1
}
if(year1 == year2 && month1 == month2) //如果年月相同,则返回相信日期相减数据
{
return day1 > day2 ? day1 - day2 : day2 - day1;
}
else if(year1 == year2) //如果年份相同,
{
int d1, d2;
d1 = DayInYear(year1, month1, day1); //调用月份年年份函数来获得数据
d2 = DayInYear(year2, month2, day2);
return d1 > d2 ? d1 - d2 : d2 - d1;
}
else //如果年份不同,这重新计算
{
if(year1 > year2) //如果前方数据大于后方,这调换这两数据
{
swap(year1, year2); //这里使用了高端的交换两个数的方法 按亦或算法写的
swap(month1, month2);
swap(day1, day2);
}
int d1,d2,d3;
if(IsLeap(year1))
d1 = 366 - DayInYear(year1,month1, day1);
else
d1 = 365 - DayInYear(year1,month1, day1);
d2 = DayInYear(year2,month2,day2);
d3 = 0;
for(int year = year1 + 1; year < year2; year++)
{
if(IsLeap(year))
d3 += 366;
else
d3 += 365;
}
return d1 + d2 + d3;
}
}
void Widget::swap(int a,int b) //第一次使用这么高端的交换两个数
{
a=a^b;
b=a^b;
a=a^b;
}
/***********************************************************************************************/
Qt 计算两个日前间隔天数的更多相关文章
- C语言计算两个日期间隔天数
在网上看到了一个C语言计算日期间隔的方法,咋一看很高深,仔细看更高神,很巧妙. 先直接代码吧 #include <stdio.h> #include <stdlib.h> in ...
- Oracle 计算两个日期间隔的天数、月数和年数
在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...
- Java8 使用LocalDate计算两个日期间隔多少年,多少月,多少天
最近项目遇到一个需要计算两个日期间隔的期限,需要计算出,整年整月整日这样符合日常习惯的说法,利用之前的Date和Calendar类会有点复杂,刚好项目使用了JDK8,那就利用起来这个新特性,上代码: ...
- java中计算两个日期之间天数的程序设计。
//用java编写出一个以下方法计算两个日期之间天数的程序设计. import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...
- js计算两个日期的天数差值
js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...
- MYSQL如何计算两个日期间隔天数
如何透过MYSQL自带函数计算给定的两个日期的间隔天数 有两个途径可获得 1.利用TO_DAYS函数 select to_days(now()) - to_days('20120512') ...
- js计算两个日期相差天数
//两个时间相差天数 兼容firefox chrome var days = function(startDate) { var sdate = new Date(startDate.replace( ...
- javaScript 计算两个日期的天数相差
一:计算两个日期相差的天数 1 <html> <head> <meta http-equiv="Content-Type" content=" ...
- Java计算两个时间的天数差与月数差 LocalDateTime
/** * 计算两个时间点的天数差 * @param dt1 第一个时间点 * @param dt2 第二个时间点 * @return int,即要计算的天数差 */ public stat ...
随机推荐
- l1 l2 loss
衡量预测值与真实值的偏差程度的最常见的loss: 误差的L1范数和L2范数 因为L1范数在误差接近0的时候不平滑,所以比较少用到这个范数 L2范数的缺点是当存在离群点(outliers)的时候,这些点 ...
- 去掉Win7资源管理器左侧不需要的项目
通过修改注册表去掉win7资源管理器左侧你不喜欢的项目: 1,打开注册表WIN+R, 输入:regedit 2,找到HKEY_CLASSES_ROOT \ CLSID \, 再找到对应项, 其包含一个 ...
- Vue教程:Class 与 Style 绑定(四)
绑定 HTML Class 对象语法 ①.添加单个class: <div v-bind:class="{ active: isActive }"></div> ...
- trunc(sysdate)的含义是什么
1.ORACLE中TRUNC是截取的函数
- chromium之lazy_instance
先看看介绍 // The LazyInstance<Type, Traits> class manages a single instance of Type, // which will ...
- 多用户OFDM系统资源分配研究
首先,OFDMA 是什么? OFDM 技术的基本原理是将无线信道划分为若干互相正交的子信道,把高速串行数据流转化为低速并行子数据流,低速并行子数据流在子信道上独立传输. OFDMA 是LTE的下行多址 ...
- array of TVarRec 动态数组使用
FDQuery.AppendRecord()里是一个array of TVarRec.我们一般都是直接用[Var1,Var2,...].这样手工输入,但如果增加的元素我们预先不知道,就要声明一个arr ...
- Scala的符号入门
Spark是由Scala编写的.Spark作为一款十分易用高效的大数据框架使用越来越广泛,Scala也随之有更多的人去学习. 语言相通,相信有python.java基础的程序员学习Scala并没有太大 ...
- Linux-3.5-Exynos4412驱动分层分离
linux-3.5/Documentation/driver-model/bus.txt 先写一个简单的例子,是为了给学习platform做准备. dev.h #ifndef JASON_DEV_H_ ...
- 『Python基础-5』数字,运算,转换
『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...