C 以小时为单位找出两个日期之间的差异?

C 以小时为单位找出两个日期之间的差异?,c,C,例如,我可以通过查看这两个日期来计算这两个日期的差异,但在程序中计算这两个日期时,我没有任何线索 日期:A是2014/02/12(y/m/d)13:26:33,B是2014/02/14(y/m/d)11:35:06,则小时差为46 您可以使用来计算C中两次之间的差值。但是,它使用mktime和tm double difftime(time_t time1, time_t time0); 您可以使用来计算C中两次之间的差值。但是,它使用mktime和tm double difftime(time

例如,我可以通过查看这两个日期来计算这两个日期的差异,但在程序中计算这两个日期时,我没有任何线索

日期:A是
2014/02/12(y/m/d)13:26:33
,B是
2014/02/14(y/m/d)11:35:06
,则小时差为46

您可以使用来计算
C
中两次之间的差值。但是,它使用
mktime
tm

double difftime(time_t time1, time_t time0);
您可以使用来计算
C
中两次之间的差值。但是,它使用
mktime
tm

double difftime(time_t time1, time_t time0);
从1970年1月1日起,将两个日期(datetimes)转换为秒,这是一种简单的方法(更不用说时区)。建造差异和(塔达)偏差3600

如果我没记错的话,mktime()应该做这项工作

HTH

一个简单的方法(不谈时区)是从1970年1月1日起将两个日期(日期时间)转换为秒。建造差异和(塔达)偏差3600

如果我没记错的话,mktime()应该做这项工作


HTH

我假设您的存储时间是字符串:as
“2014/02/12 13:26:33”

要计算时差,您需要使用:

函数
difftime()
将两个日历时间之间的差值计算为
time\t
对象(
time\u end-time\u beg
),以秒为单位。如果
time\u end
指的是
time\u beg
之前的时间点,则结果为负值。现在的问题是
difftime()
不接受字符串。我们可以通过两个步骤将字符串转换为中定义的结构,正如我在回答中所述:

  • 用于将
    char*
    时间字符串转换为

    strtime()
    函数使用format指定的格式,将buf指向的字符串转换为存储在tm指向的tm结构中的值。要使用它,您必须使用文档中指定的格式字符串:

    对于您的时间格式,我将解释格式字符串:

  • %Y:4位数的年份。可能是负面的
  • %m:月[1-12]
  • %d:月日[1-31]
  • %T:带秒的24小时时间格式,与%H:%M:%S相同(您也可以显式使用%H:%M:%S)
  • 因此,函数调用将如下所示:

    //          Y   M  D  H  M  S 
    strptime("2014/02/12 13:26:33", "%Y/%m/%d %T", &tmi) 
    
    其中
    tmi
    struct tm
    结构

  • 第二步是使用:

  • 以下是我编写的代码(阅读注释):


    我假设您的存储时间是字符串:as
    “2014/02/12 13:26:33”

    要计算时差,您需要使用:

    函数
    difftime()
    将两个日历时间之间的差值计算为
    time\t
    对象(
    time\u end-time\u beg
    ),以秒为单位。如果
    time\u end
    指的是
    time\u beg
    之前的时间点,则结果为负值。现在的问题是
    difftime()
    不接受字符串。我们可以通过两个步骤将字符串转换为中定义的结构,正如我在回答中所述:

  • 用于将
    char*
    时间字符串转换为

    strtime()
    函数使用format指定的格式,将buf指向的字符串转换为存储在tm指向的tm结构中的值。要使用它,您必须使用文档中指定的格式字符串:

    对于您的时间格式,我将解释格式字符串:

  • %Y:4位数的年份。可能是负面的
  • %m:月[1-12]
  • %d:月日[1-31]
  • %T:带秒的24小时时间格式,与%H:%M:%S相同(您也可以显式使用%H:%M:%S)
  • 因此,函数调用将如下所示:

    //          Y   M  D  H  M  S 
    strptime("2014/02/12 13:26:33", "%Y/%m/%d %T", &tmi) 
    
    其中
    tmi
    struct tm
    结构

  • 第二步是使用:

  • 以下是我编写的代码(阅读注释):


    你是以字符串的形式输入的吗?你检查过那个问题了吗?阅读difftime,我如何在数月、数天、数小时和数分钟内使用它,而不是程序的处理时间?您是否以字符串的形式获得输入?您是否检查了该问题?阅读difftime,我如何在数月、数天、数小时和数分钟内使用它,而不是在程序中使用处理时间?