C++下格式化时间与输出

#include <iostream>
#include <time.h>
using std::cout;
using std::endl;


int main(int argc, char** argv) {
 char string1[255];
 char string2[255];
 time_t Today;
 tm* Time;
 
 time(&Today);
 Time = localtime(&Today);
 
 strftime(string1, 255, "%Y/%m/%d\t%H:%M:%S\n",Time);
 strftime(string2, 255, "%Y/%m/%d\t%I:%M:%S %p\n",Time);
 cout<<string1<<"\n"<<endl;
 cout<<string2<<endl;
 return 0;
}
Visual C++ 6.0开发环境中显示当地日期与时间主要通过 localtime() 函数来实现,该函数的原型在 time.h 头文件中.函数原型如下
struct tm *localtime(xonst time_t *timer)

该函数的作用是把timer所指的时间(如函数time返回的时间)转换为当地标准时间,并以tm结构形式返回。其中,参数timer为主要获取当前时间的传递参数,格式为time_t指针类型。

而在Visual Studio 2010极其以后的版本,新增了安全函数,改成localtime_s(),语法格式也发生了变化:

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
_tm
指向要填充的时间结构的指针。
time
指针,指向存储的时间。

如果成功,返回值则为零。 如果失败,返回值将是错误代码。 错误代码是在 Errno.h 中定义的。

结构类型的字段 tm 存储下面的值,其中每个为 int。

tm_sec
分钟后的几秒 (0-59)。
tm_min
小时后的分钟 (0-59)。
tm_hour
午夜后经过的小时 (0-23)。
tm_mday
月 (1-31) 天。
tm_mon
月 (0 – 11;年 1 月 = 0)。
tm_year
年份 (当前年份减去 1900年)。
tm_wday
星期几 (0 – 6;星期日 = 0)。
tm_yday
每年的一天 (0-365;1 月 1 日 = 0)。
tm_isdst
如果夏令时有效,则为,正值夏时制不起作用; 如果为 0如果夏时制的状态是未知的负值。 如果 TZ 设置环境变量,C 运行库会假定规则适用于美国境内用于实现夏令时 (DST) 计算。
下面以一个实例来输出当地日期与时间:
#include <stdio.h>
#include <string.h>
#include <time.h>

int main(void)
{
        struct tm t;   //tm结构指针
	time_t now;  //声明time_t类型变量
	time(&now);      //获取系统日期和时间
	localtime_s(&t, &now);   //获取当地日期和时间
        
       //格式化输出本地时间
        printf("年:%d\n", t.tm_year + 1900);
	printf("月:%d\n", t.tm_mon + 1);
	printf("日:%d\n", t.tm_mday);
	printf("周:%d\n", t.tm_wday);
	printf("一年中:%d\n", t.tm_yday);
	printf("时:%d\n", t.tm_hour);
	printf("分:%d\n", t.tm_min);
	printf("秒:%d\n", t.tm_sec);
	printf("夏令时:%d\n", t.tm_isdst);
	system("pause");
	//getchar();
	return 0;

}

精确到毫秒

#include <iostream>  
#include <windows.h>  
int main(){  
  
    DWORD t_start, t_end;  
    t_start = GetTickCount();//从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。  
    Sleep(3000);  
    t_end = GetTickCount();  
    std::cout << t_end - t_start << std::endl;  
    return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yaked19

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

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

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

打赏作者

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

抵扣说明:

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

余额充值