欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++与c#的时间转换示例分享

程序员文章站 2024-02-23 13:07:58
1.c++中的时间:(1) time_t其实是一个64位的long int类型(2) time函数:函数简介:函数名:  time   头文件:  ti...

1.c++中的时间
(1) time_t其实是一个64位的long int类型
(2) time函数:
函数简介:
函数名:  time   
头文件:  time.h   
函数原型:time_t time(time_t *timer)   
功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从cut(coordinated universal time)时间1970年1月1日00:00:00(称为unix系统的epoch时间)到当前时刻的秒数,然后调用localtime将time_t所表示的cut时间转换为本地时间(我们是+8区,比cut多8个小时)并转成struct tm类型,分别表该类型的各数据成员示年月日时分秒。
显示系统当前时间:

复制代码 代码如下:

int main()
{
time_t ltime;
time(&ltime);
cout<<ctime(&time);
return 0;
}

ctime函数:
char *ctime(const time_t *timer);
timer:time_t类型指针
返回值:格式为“星期 月 日 小时:分:秒 年\n\0”的字符串


localtime函数:(gmtime函数与之类似)
struct tm *localtime(const time_t *timer);
timer:time_t类型指针
返回值:以tm结构表示的时间指针


asctime函数:
char *asctime(const struct tm *timeptr);
timeptr:结构tm指针
返回值:格式为“星期 月 日 小时:分:秒 年\n\0”的字符串
例:

复制代码 代码如下:

#include<stdio.h>   
#include <stddef.h>   
#include <time.h>   
int main(void)   
{
time_t timer;  //time_t就是long int 类型
struct tm *tblock;
timer = time(null);//这一句也可以改成time(&timer);
tblock = localtime(&timer);
printf("local time is: %s\n",asctime(tblock));
return 0;   
}

2.将c++中time_t类型转换成c#中的datetime类型

复制代码 代码如下:

//time_t是世界时间, 比 本地时间 少8小时(即28800秒)
double seconds = 1259666013 + 28800;
double secs = convert.todouble(seconds);
datetime dt = new datetime(
1970, 1, 1, 0, 0, 0, datetimekind.unspecified).addseconds(secs);
//timespan span =
//        timespan.fromticks(seconds*timespan.tickspersecond);
console.writeline(dt);

3.将c#的datetime类型转换成c++的time_t类型

复制代码 代码如下:

public static long datetimetotime_t(datetime datetime)
{
long time_t;
datetime dt1 = new datetime(1970, 1, 1,0,0,0);
timespan ts =datetime - dt1;
time_t = ts.ticks/10000000-28800;     
return time_t;
}

static void main(string[] args)
{
datetime datetime = new datetime(2009,12,1,19,13,33);
console.writeline(datetimetotime_t(datetime));
}