久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3157|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

世界時間自校正顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:193803 發(fā)表于 2017-4-26 13:52 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include <time.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>


/** 日期時間結(jié)構(gòu)體
*  依次為:秒、分、時、日、月、年、周
*/
typedef struct
{
    int tm_sec ;
    int tm_min ;
    int tm_hour ;
    int tm_day ;
    int tm_mon ;
    int tm_year ;
    int tm_week ;
}TIME_STRUCT;


/** 存儲時差的數(shù)組,以世界參考時間地冰島為參照時間
*  莫斯科 晚13小時 東京 晚7小時 洛杉磯  24小時  倫敦晚16小時
*/
int EquationOfTime[] = {8, 24, 16, 7, 13} ;


/** 全局字符數(shù)組
*  存儲地名
*/
char AddrName[][15] =
{
    "中國·北京",
    "美國·洛杉磯",
    "英國·倫敦",
    "日本·東京",
    "俄羅斯·莫斯科"
} ;


/** \brief 畫圖形框上下邊的*
* \param
* \return
*/
void ImagePaint(void)
{
    int j ;

    for(j = 0; j < 61; j++)//畫一行星號
    {
        printf("* ") ;
    }
    printf("\n") ;//畫完一行星號后換行
}


/** \brief  計(jì)算地區(qū)的日期與時間
* \param TIME_STRUCT *timeinfo:參照時間
* \param int j :與參照時間之間的時差
* \return TIME_STRUCT*指針
*/
TIME_STRUCT* CountDateTime(TIME_STRUCT *timeinfo, int j)
{
    TIME_STRUCT *time_tmpcur ;

    time_tmpcur = timeinfo ;//將臨時結(jié)構(gòu)體指針指向傳進(jìn)來的指針
    if(j > 0)//當(dāng)時差大于0時證明當(dāng)前地區(qū)時間晚于參照時間
    {
        if((j + timeinfo->tm_hour)/24 == 1)//時差晚一天時,因?yàn)橥砹?4小時當(dāng)前地區(qū)的日期應(yīng)加1
        {
            time_tmpcur->tm_day = timeinfo->tm_day + 1 ; //日期加一天
            time_tmpcur->tm_week = timeinfo->tm_week + 1 ; //周期相應(yīng)加一天
        }
        else//時差晚少于一天
        {
            time_tmpcur->tm_day = timeinfo->tm_day ;//日期不變
        }
        time_tmpcur->tm_hour = (j + timeinfo->tm_hour)%24 ;//當(dāng)前時間 =( 時差 + 參照時間)對24的取余
    }
    else if(j < 0)//當(dāng)時差小于0時證明當(dāng)前地區(qū)時間早于參照時間
    {
        if((j + timeinfo->tm_hour)/24 < 0)//早一天的情況,因?yàn)樵缌?4小時以上,當(dāng)前地區(qū)的日期應(yīng)減一天
        {
            time_tmpcur->tm_day = timeinfo->tm_day - 1 ;//減一天
            time_tmpcur->tm_week = timeinfo->tm_week - 1 ; //周期相應(yīng)減一天
        }
        else//小于一天的情況
        {
            time_tmpcur->tm_day = timeinfo->tm_day ;
        }
        time_tmpcur->tm_hour = (j + timeinfo->tm_hour)%24 ;
    }
    else if(j == 0)//沒有時差
    {
        time_tmpcur->tm_day = timeinfo->tm_day ;
        time_tmpcur->tm_hour = (j + timeinfo->tm_hour)%24 ;
    }
    return time_tmpcur ;//返回指針
}

/** \brief 主函數(shù)
*
* \param
* \param
* \return
*
*/
int main(void)
{
    time_t tmp_t ;
    TIME_STRUCT *time_cur, *time_tmp ;
    int long tmp_time, c_time ;
    int i ;
    char date_str[5][15] ;//二維數(shù)組 保存日期字符串方便顯示
    char time_str[5][15] ;//二維數(shù)組 保存時間字符串方便顯示
    int week[5] ;//保存周期 方便顯示

    c_time = time(&tmp_t) ;//獲得系統(tǒng)的本地時間值

    /**
    *   死循環(huán) 用于不斷刷新當(dāng)前時間
    */
    while(1)
    {
        tmp_time = time(&tmp_t) ;//再次獲得系統(tǒng)的本地時間值

        if(tmp_time - c_time  >= 1)//當(dāng)兩次系統(tǒng)時間間隔大于一秒的時候
        {
            c_time = tmp_time ;//更新時間值 便于下一次比較
            system("cls") ;     //清屏函數(shù) 刷新當(dāng)前屏幕
            printf("\t\t\t\t\t世界時間\n\n") ;
            ImagePaint() ;//畫一行星號做上邊框


            /**
             *  循環(huán)5次 調(diào)用CountDateTime()函數(shù)根據(jù)當(dāng)前參照時間與時差依次獲得
             *  五個地區(qū)的當(dāng)前時間
             */
            for(i = 0; i < 5; i++)
            {
                time_tmp = gmtime(&tmp_t) ;//獲得冰島時間 世界標(biāo)準(zhǔn)時間地
                time_cur = CountDateTime(time_tmp, EquationOfTime[i]) ;//調(diào)用函數(shù)并獲得返回值結(jié)構(gòu)體指針 返回當(dāng)前地區(qū)時間
                sprintf(date_str[i], "%d-%.2d-%.2d", time_cur->tm_year+1900, time_cur->tm_mon + 1, time_cur->tm_day) ; //調(diào)用sprintf()函數(shù)將當(dāng)前地區(qū)的日期和時間轉(zhuǎn)化為一個字符串 便于顯示
                sprintf(time_str[i], "%d:%.2d:%.2d", time_cur->tm_hour, time_cur->tm_min, time_cur->tm_sec) ;
                week[i] = time_cur->tm_week ; //當(dāng)前地區(qū)的當(dāng)前周期
            }

            /**
             *  顯示地名
             *  顯示日期
             *  顯示周期
             */
            printf("*\t%s\t*\t%s\t*\t%s\t*\t%s\t*\t%s\t*\n", AddrName[0], AddrName[1], AddrName[2], AddrName[3], AddrName[4]) ;
            printf("*\t%s\t*\t%s\t*\t%s\t*\t%s\t*\t%s\t*\n", date_str[0], date_str[1], date_str[2], date_str[3], date_str[4]) ;
            printf("*\t%s\t*\t%s\t\t*\t%s\t*\t%s\t\t*\t%s\t*\n", time_str[0], time_str[1], time_str[2], time_str[3], time_str[4]) ;
            printf("*\t星期%d\t\t*\t星期%d\t\t*\t星期%d\t\t*\t星期%d\t\t*\t星期%d\t\t*\n", week[0], week[1], week[2], week[3], week[4]) ;

            ImagePaint() ;//畫一行星號做下邊框
        }
    }

    return 0 ;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:211258 發(fā)表于 2017-6-15 16:13 | 只看該作者
非常好
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩国产在线播放 | 九九热在线视频观看 | 国产高清自拍视频 | 成人网av | 欧美成人黄色 | 一级黄色在线观看 | 亚洲涩涩涩 | 日韩在线一区二区三区 | 午夜国产视频 | 一区二区三区影视 | 久久久久久国产精品 | 久久综合99| 黄色影音| 中文字幕在线观看免费视频 | av永久免费 | 黄在线观看| 国产精品久久久久久久午夜 | 欧美一区二区三区四区五区 | 欧美午夜视频 | 国产人成一区二区三区影院 | 欧美日韩免费视频 | 99热国产| 日韩一级在线观看 | 欧美综合网 | 欧美理论在线观看 | 国产精品一区二区三区四区五区 | 国产成人区 | 久久国产免费 | 久久久久久穴 | 中文在线观看免费视频 | 五月天综合网 | 日韩一区二区三区四区 | 成人欧美一区二区三区白人 | 国产又粗又大又硬 | 成人不卡视频 | 欧美日韩成人 | av久久 | 国产男女视频 | 亚洲视频在线播放 | 欧美成人午夜 | 国产欧美激情 |