C++中的日期和时间

在C++中, 要得到当前系统的日期和时间,可以使用time函数.

time函数的声明在time.h中,它需要一个参数,类型是time_t类型. 我们打开time.h可以看到,

所谓的time_t只不过是一个long. typedef    long time_t;

time函数的声明如下:

time_t  time( time_t *time )

使用时,通常不用返回值, 而是传递一个参数, 因为传递的是地址, 所以, time函数可以在函数中改变实参的指向. 如:

time_t  *clock=new time_t;
time(clock);     //clock指向的内存单元中存放的是 "日期时间" 的整型表示(叫日历时间,calendar time ).

这时,输出 clock,还看不明白. 还需要把clock转换为我们好理解的格式:

用ctime函数.  ctime函数的原型:   char *ctime( const time_t *time );

所以, 可以得到一个字符串, char *s=ctime(clock);  cout<<s; 如, 在我的VC中输出为:

Thu Nov 12 13:30:04 2007

依次为: 星期 月 日 时分秒 年

方法2:

很多时候我们并不需要这样的格式,我们只是想得到其中的一些值,如年,月,日等,然后自己处理,这时, 可以使用localtime函数

函数原型为:  struct tm  *localtime( const time_t *time );

它把日历时间转换为本地时间, 但返回值是一个结构体. 我们来看看, 在time.h中:

struct tm
{
int tm_sec; /* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; /* Minutes: 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 Jan. 1: 0-365 */
int tm_isdst; /* +1 Daylight Savings Time, 0 No DST, -1 don't know */
};
很简单, 其中要注意的是:

星期是从星期天开始, 即:0表示星期天. 还有个tm_yday, 表示从1月1号到现在的天数,值的范围从0~365

年,是从1900年算,到现在的数字,而月份从0开始的. 所以,要稍加变换.如:要求当前年月日

tm *mytime=new tm;      //定义一个结构体指针,C++中可以不要struct,但C语言必须写成: struct tm *mytime
time_t *aclock=new time_t;     //定义 time_t 指针
time(clock);                                // 得到日历时间
mytime=localtime(aclock);     //得到本地时间


int year=1900+mytime->tm_year;

int month=mytime->tm_mon+1;

int day=mytime->tm_mday;

......

如果想进一步得到前面ctime的格式,可以用asctime: 即 asctime(mytime); 也返回一个字符串

即: ctime 相当于 asctime( localtime( tp ) );

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abigriver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值