GPS,UTC和本地时间的显示器

GPS,UTC和本地时间的显示器

GitHub仓库:https://github.com/XinLiGitHub/GpsUtcAndLocalTime

PS:博文不再更新,后续更新会在GitHub仓库进行。


      GPS,UTC和本地时间的显示器。程序中涉及到朱利安日期的转换,详细介绍见维基百科[Julian day](https://en.wikipedia.org/wiki/Julian_day)。


1,开发环境

      1,操作系统:Windows 10 专业版

      2,IDE:Visual Studio 2015 专业版


2,程序源码

      DateTime.h文件

/****************************************************************
 * Copyright (C) 2017, XinLi, all right reserved.
 * File name:    DateTime.h
 * Date:         2017.10.17
 * Description:  Date and time module header file.
*****************************************************************/

#ifndef __DATETIME_H
#define __DATETIME_H

/****************************************************************
 *                        Header include
*****************************************************************/


/****************************************************************
 *                       Macro definition
*****************************************************************/


/****************************************************************
 *                       Type definition
*****************************************************************/


/****************************************************************
 *                     Structure definition
*****************************************************************/
typedef struct
{
  int year;
  int month;
  int day;
  int hour;
  int minute;
  int second;
}DateTime;

typedef struct
{
  int week;
  int second;
}GpsWeekSecond;


#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */

/****************************************************************
 *                     Variable declaration
*****************************************************************/


/****************************************************************
 *                     Function declaration
*****************************************************************/
DateTime GregorianCalendarDateAddYear(DateTime time, int year);
DateTime GregorianCalendarDateAddMonth(DateTime time, int month);
DateTime GregorianCalendarDateAddWeek(DateTime time, int week);
DateTime GregorianCalendarDateAddDay(DateTime time, int day);
DateTime GregorianCalendarDateAddHour(DateTime time, int hour);
DateTime GregorianCalendarDateAddMinute(DateTime time, int minute);
DateTime GregorianCalendarDateAddSecond(DateTime time, int second);
GpsWeekSecond GregorianCalendarDateToGpsWeekSecond(DateTime time);
double GregorianCalendarDateToJulianDate(DateTime time);
double GregorianCalendarDateToModifiedJulianDate(DateTime time);
GpsWeekSecond GpsWeekSecondAddYear(GpsWeekSecond time, int year);
GpsWeekSecond GpsWeekSecondAddMonth(GpsWeekSecond time, int month);
GpsWeekSecond GpsWeekSecondAddWeek(GpsWeekSecond time, int week);
GpsWeekSecond GpsWeekSecondAddDay(GpsWeekSecond time, int day);
GpsWeekSecond GpsWeekSecondAddHour(GpsWeekSecond time, int hour);
GpsWeekSecond GpsWeekSecondAddMinute(GpsWeekSecond time, int minute);
GpsWeekSecond GpsWeekSecondAddSecond(GpsWeekSecond time, int second);
DateTime GpsWeekSecondToGregorianCalendarDate(GpsWeekSecond time);
double GpsWeekSecondToJulianDate(GpsWeekSecond time);
double GpsWeekSecondToModifiedJulianDate(GpsWeekSecond time);
double JulianDateAddYear(double jd, int year);
double JulianDateAddMonth(double jd, int month);
double JulianDateAddWeek(double jd, int week);
double JulianDateAddDay(double jd, int day);
double JulianDateAddHour(double jd, int hour);
double JulianDateAddMinute(double jd, int minute);
double JulianDateAddSecond(double jd, int second);
DateTime JulianDateToGregorianCalendarDate(double jd);
GpsWeekSecond JulianDateToGpsWeekSecond(double jd);
double JulianDateToModifiedJulianDate(double jd);
double ModifiedJulianDateAddYear(double mjd, int year);
double ModifiedJulianDateAddMonth(double mjd, int month);
double ModifiedJulianDateAddWeek(double mjd, int week);
double ModifiedJulianDateAddDay(double mjd, int day);
double ModifiedJulianDateAddHour(double mjd, int hour);
double ModifiedJulianDateAddMinute(double mjd, int minute);
double ModifiedJulianDateAddSecond(double mjd, int second);
DateTime ModifiedJulianDateToGregorianCalendarDate(double mjd);
GpsWeekSecond ModifiedJulianDateToGpsWeekSecond(double mjd);
double ModifiedJulianDateToJulianDate(double mjd);

#ifdef __cplusplus
}
#endif  /* __cplusplus */

#endif  /* __DATETIME_H */


      DateTime.c文件

/****************************************************************
 * Copyright (C) 2017, XinLi, all right reserved.
 * File name:    DateTime.c
 * Date:         2017.10.17
 * Description:  Date and time module source file.
*****************************************************************/

/****************************************************************
 *                        Header include
*****************************************************************/
#include "DateTime.h"

/****************************************************************
 *                       Global variables
*****************************************************************/


/****************************************************************
 *                     Function declaration
*****************************************************************/


/****************************************************************
 *                     Function definition
*****************************************************************/

/****************************************************************
 * Function:    GregorianCalendarDateAddYear
 * Description: Gregorian calendar date add year.
 * Input:       time: Gregorian calendar date.
 *              year: The number of year to add.
 * Output:
 * Return:      Gregorian calendar date.
*****************************************************************/
DateTime GregorianCalendarDateAddYear(DateTime time, int year)
{
  time.year += year;

  if(time.month == 2)
  {
    int mday = 0;

    if((((time.year % 4) == 0) && ((time.year % 100) != 0)) || ((time.year % 400) == 0))
    {
      mday = 29;
    }
    else
    {
      mday = 28;
    }

    if(time.day > mday)
    {
      time.mo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值