時區轉換函數

typedef struct

{

    int year;

    int month;

    int day;

}Date;

 

typedef stuct

{

   int hour;

   int minute;

   int second;

}Time;

typedef struct

{

    Date date;

    Time time;  

}DateTime;

 

// 在時區的定義上,有些時區與格林威治時間相差的時間可能不是整數個小時,可能時一個半個小時,所以下面用分鐘表示與格林威治時間相差的時間。

const int time_zones[] =

{

       -60 * 11, // 西11區

       -60 * 10 // 西10區

....
}

Set:

time_a =  a時區的時間, time_zone_a = 與格林威治時間相差的時間

則對應的格林威治時間 time_a_gmt = time_a + time_zone_a,

time_a = time_a_gmt - time_zone_a;

所以a,b 兩個時區時間的關係則爲 time_b = time_a_gmt - time_zone_b = time_a + time_zone_a - time_zone_b;

 

// TimeZone是一個枚舉值,value與time_zones中的數組下標相對應。

int convertDateTimeBetweeenTimeZones(DateTime* p_from_datetime, TimeZone from_time_zone, DateTime* p_to_datetime, TimeZone to_time_zone )

{

 

     int minitues =  time_zones[from_time_zone] - time_zones[to_time_zone];

 

     if(!p_from_datetime || !p_to_datetime)

     {

         return 0;

     }

     memcpy(p_to_datetime, p_from_datetime, sizeof(DateTime) );

     dateTimeAdd(p_to_datetime, MINUTE, minitues);

     return 1;

}

發佈了40 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章