计算两个日期之间相差多少个小时

题目描述:

给定两个日期,例如2009120311和2008110413,格式为年/月/日/小时,求两个日期之间相差多少个小时。

思考:

第一感似乎应该先计算相差多少年,然后多少个月,多少天,多少个小时,然后累加就好了,但是似乎没有这么简单:

1.闰年和平年

2.每个月的天数不一样

3.闰年二月和平年二月

4.相减不够怎么办

上面的这些问题都是应该想到的,如果想到这些问题,那么应该就可以写代码了。

首先写个判断闰年还是平年的函数:

def dayOfYear(year):
	if (year%4==0&year%100!=0)|(year%400==0):
		return 1
	else:
		return 0

然后我的思路是,计算每个日期,在当前年是处在第多少个小时,然后计算两个年之间相差多少小时,两者合并,就可以计算出两个日期相差多少个小时,代码如下:

def diffHours(date1, date2):
	dayOfMonth = (31,28,31,30,31,30,31,31,30,31,30,31)
	temp1 = date1
	temp2 = date2

	hour1 = temp1%100
	temp1 = temp1/100
	hour2 = temp2%100
	temp2 = temp2/100

	day1 = temp1%100
	temp1 = temp1/100
	day2 = temp2%100
	temp2 = temp2/100

	month1 = temp1%100
	temp1 = temp1/100
	month2 = temp2%100
	temp2 = temp2/100

	year1 = temp1
	year2 = temp2

	print year1, month1, day1, hour1
	print year2, month2, day2, hour2

	total1 = hour1
	total1 += 24 * (day1 - 1)
	for i in range(month1-1):
		total1 = total1 + dayOfMonth[i]
		if i==1:
			total1 = total1 + dayOfYear(year1)

	total2 = hour2
	total2 += 24 * (day2 - 1)
	for i in range(month2 - 1):
		total2 = total2 + dayOfMonth[i]
		if i==1:
			total2 = total2 + dayOfYear(year2)

	flag = 1
	totalDay = 0
	if year1 < year2:
		temp = year1
		year1 = year2
		year2 = temp
		flag = -1
	while(year1<year2):
		totalDay += 365 + dayOfYear(year1)
		year1 +=1

	if flag == 1:
		total1 = total1 + totalDay * 24
	else:
		total2 = total2 + totalDay * 24

	print total1,total2
	return total1 - total2
时间: 2024-08-24 20:00:10

计算两个日期之间相差多少个小时的相关文章

计算两个日期之间相差几天(Date类型与String类型互相转换)

一:计算两个日期之间相差几天 1 /** 2 * 3 */ 4 package com.hlcui.date; 5 6 import java.text.ParseException; 7 import java.text.SimpleDateFormat; 8 import java.util.Calendar; 9 import java.util.Date; 10 11 import org.junit.Test; 12 13 /** 14 * @author Administrator

计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较

/** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 格式不正确返回null * @dada 2016-09-19 lhh添加备注 */ function DateDiff(higDate, lowDate) { //sDate1和sDate2是2006-12-18格式 var aDate, oDate1, oDate2, iDays; aDate =

java计算两个日期之间相差天数和相隔天数详解

大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为一个偶然的机会,一个项目运行几年却没有人发现,我在其中还不到一年,一开始写这些这代码的人根本没分清楚什么情况就写了,怪不得统计的数据总是有那么细微的差别,在于日期"相差"和"相隔"有某些特定的情况下是相等的

C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:

如下: typedef struct date { int year; int month; int day; }; 提示: 1. 使用如下函数完成相应功能 int isleapyear(int y); //计算是否为闰年 int islegal(Date x); //计算日期是否合法 int calcday(Date x);//计算日期是当年的第几天,用于计算两个日期之间天数的差值 2. 用于一维数组表示一年每月含有的天数 int dayofmonth[12] = {31,28,31,30,3

计算两个日期之间相差多少天

计算两个日期天数差的函数,通用,根据指定的一个日期和相差的天数,获取另外一个日期 $(document).ready(function () { //获取单元格值改变事件不需要获取焦点 //备注:可以换成  $(".CheckCountLen").bind("blur", function () { $("#butOK").bind("click", function () { //判断开始时间和结束时间 var strSta

C#计算两个日期之间相差的天数

说明:如:1900-01-01与1900-01-01之间算一天 private static int DateDiff(DateTime dateStart, DateTime dateEnd) { DateTime start = Convert.ToDateTime(dateStart.ToShortDateString()); DateTime end = Convert.ToDateTime(dateStart.ToShortDateString()); TimeSpan sp = en

计算两个日期之间相差几天几小时几分钟

NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    NSDate *  senddate=[NSDate date];    //结束时间    NSDate *endDate = [dateFormatter dateFromString:@"2014-6-24 00:00:00&q

C#中如何获得两个日期之间的天数差 ( c# 计算两个日期之间相差的天数 )

DateTime dtLast = new DateTime(Convert.ToInt32(LastMenses.Year), Convert.ToInt32(LastMenses.Month), Convert.ToInt32(LastMenses.Day)); DateTime dtThis = new DateTime(Convert.ToInt32(Year), Convert.ToInt32(thisMonth), Convert.ToInt32(Day)); int interva

java计算两个日期之间相隔的天数

1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Calendar; 4 import java.util.Date; 5 6 7 public class date { 8 9 /** 10 * @param args 11 * @throws ParseException 12 */ 13 public static void main(String[] arg