第一种方法:
命令:取时间间隔()
调用格式: 〈双精度小数型〉 取时间间隔 (日期时间型 时间1,日期时间型 时间2,整数型 取间隔部分) - 系统核心支持库->时间操作英文名称:TimeDiff
返回一个数值,表示“时间1”减去“时间2”之后的间隔数目。注意:每个星期以星期天为第一天。本命令为初级命令。
参数<1>的名称为“时间1”,类型为“日期时间型(date)”。
参数<2>的名称为“时间2”,类型为“日期时间型(date)”。
参数<3>的名称为“取间隔部分”,类型为“整数型(int)”。参数值指定取时间间隔的单位,可以为以下常量: 1、#年份; 2、#季度; 3、#月份; 4、#周; 5、#日; 6、#小时; 7、#分钟; 8、#秒。
第二种方法:
命令:时间_到时间戳()
把2个时间转成时间戳,时间戳就是个长整数的数字,比较他们的大小。
子程序名:时间_到时间戳把指定日期时间转换为10位或13位时间戳,默认生成13位时间戳。13位:1325252169718,10位:1325252169
返回值类型:文本型
参数<1>的名称为“参_时间”,类型为“日期时间型”,允许接收空参数数据。注明:可为空,默认为现行时间。
参数<2>的名称为“参_十位时间戳”,类型为“逻辑型”,允许接收空参数数据。注明:本参数为真时,将生成10位时间戳返回。
参数<3>的名称为“参_是否取满10位”,类型为“逻辑型”,允许接收空参数数据。注明:如果参数为真,则保证一定取出至少10位,如果不足10位,在前面补0. 如果为假,则直接取出。
我写了个程序 你看一下 不明白的话联系我 有注释#获取当前的时间
today = Time.new
puts "当前日期:" + today.strftime("%Y-%m-%d %H:%M:%S")#采用格式化输出
#获取指定日期的时间 如 2010-08-30 20:50:01
day = Time.local(2010, 8 , 30 , 20, 50, 1)
puts "指定日期:" + day.strftime("%Y-%m-%d %H:%M:%S")
#获取指定日期的秒数(就是1970年到指定日期的秒数)
sec1 = day.to_i
#同理,获取今天的秒数
sec2 = today.to_i
#秒数求差,同时折合为天数
num = (sec1 - sec2)/(24*60*60)
puts (day.strftime("%Y-%m-%d %H:%M:%S") + "与" + today.strftime("%Y-%m-%d %H:%M:%S") + "相差" + num.to_s + "天")
/*1) 如果时间字符串格式固定,可以直接按字符串比较大小的方法比较他们所表示对时间大小。这样比较容易。
2) 也可以根据时间字符串,提取年月日时分秒,再比较。这样可以获取时间的具体信息。对时间进行任意的操作而不限于比较。
下面是示例程序,用了上述两种方法:
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
time_t trans(char timeForamt[],char strTime[])
{
/*
struct tm {
int tm_sec// seconds after the minute - [0,59]
int tm_min// minutes after the hour - [0,59]
int tm_hour // hours since midnight - [0,23]
int tm_mday // day of the month - [1,31]
int tm_mon// months since January - [0,11]
int tm_year // years since 1900
int tm_wday //days since Sunday - [0,6]
int tm_yday // days since January 1 - [0,365]
int tm_isdst // daylight savings time flag
}
*/
struct tm t
sscanf(strTime,timeForamt,&t.tm_year,&t.tm_mon,&t.tm_mday,&t.tm_hour,&t.tm_min,&t.tm_sec)
t.tm_year -= 1900
t.tm_mon -= 1
return mktime(&t)
}
int main(int argc, char *argv[])
{
char strT1[]="2011/09/20 08:12:12"
char strT2[]="2011/10/12 12:12:12"
time_t t1,t2
// 由 strT1 转换成时间(距离: 1970 年 1 月 1 日过去的秒数)
t1 = trans("%d/%d/%d %d:%d:%d",strT1)
// 由 strT2 转换成时间(距离: 1970 年 1 月 1 日过去的秒数)
t2 = trans("%d/%d/%d %d:%d:%d",strT2)
/*
比较两个时间大小
*/
// 以字符串形式比较
if(strcmp(strT1,strT2)<0)
{
printf("%s 早于 %s\n",strT1,strT2)
}
else if(strcmp(strT1,strT2)==0)
{
printf("%s 和 %s 同时\n",strT1,strT2)
}
else
{
printf("%s 晚于 %s\n",strT1,strT2)
}
// 用秒数比较
if(difftime(t1,t2)<0)
{
printf("%s 早于 %s\n",strT1,strT2)
}
else if(difftime(t1,t2)==0)
{
printf("%s 和 %s 同时\n",strT1,strT2)
}
else
{
printf("%s 晚于 %s\n",strT1,strT2)
}
return 0
}