C++與C#的時間轉換


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));
}
復制代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM