1. 程式人生 > >協調世界時轉換為GPS周秒(轉載)

協調世界時轉換為GPS周秒(轉載)

void UTC2GPS(int year, int month, int day, int hour, int minute, double second, int *weekNo, double *secondOfweek)

/*****協調世界時轉換為GPS的周秒錶示*****///輸入時間應為協調世界時,即當地時間-8,返回時間為GPS周和周秒
int DayofYear = 0;
int DayofMonth = 0;


for (int i = 1980; i < year; i++)  //從1980年到當前年的上一年經過的天數
{
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
DayofYear += 366;
else
DayofYear += 365;
}
for (int i = 1; i < month; i++)   //從一月到當前月的上一月經歷的天數
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i ==12)
DayofMonth += 31;
else if (i == 4 || i == 6 || i == 9 || i == 11)
DayofMonth += 30;
else
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
DayofMonth += 29;
else
DayofMonth += 28;
}
}
int Day;
Day = DayofMonth + day + DayofYear-6;
*weekNo = Day/7;
*secondOfweek = Day % 7 * 86400 + hour * 3600 + minute * 60 + second+18;//18表示跳秒

}

下面這個網址可以驗證自己寫的程式是否正確

http://leapsecond.com/java/gpsclock.htm