时间转化

原创 2007年09月24日 18:13:00

typedef struct
{
    uint8   sec;        // secondsafter the minute - [0,59]
    uint8   min;        // minutesafter the hour - [0,59]
    uint8   hour;       // hours since midnight - [0,23]
}SCI_TIME_T;

typedef struct
{
    uint8   mday;       // day of the month - [1,31]
    uint8   mon;        // months  - [1,12]
    uint16  year;       // years [2000,2049]
    uint8   wday;       // days since Sunday - [0,6], (Sunday : 0, Monday : 1)
}SCI_DATE_T;

PUBLIC BOOLEAN TM_IsLeapYear(   // Return SCI_TRUE, if it is leap year;
                                // else, return SCI_FALSE.
    uint16  year                // The year to be judge
    )
{
 if (year % 400 == 0)
 {
  return SCI_TRUE;
 }
 else if (year % 100 == 0)
 {
  return SCI_FALSE;
 }
 else if (year % 4 == 0)
 {
  return SCI_TRUE;
 }
 else
 {
  return SCI_FALSE;
 }
}

PUBLIC void TM_GetTime(SCI_TM_T *realtime)
{
 SCI_TIME_T tmp_time;
 SCI_DATE_T tmp_date;
 
 TM_GetSysDate(&tmp_date);
 TM_GetSysTime(&tmp_time); 
 
 realtime->tm_sec    = tmp_time.sec;
 realtime->tm_min    = tmp_time.min;
 realtime->tm_hour   = tmp_time.hour;
 
 realtime->tm_mday   = tmp_date.mday;
 realtime->tm_mon    = tmp_date.mon;
 realtime->tm_year   = tmp_date.year;
 realtime->tm_wday   = tmp_date.wday;

    {
        uint32  i;
        uint16  *days_ptr;
       
        i = ((TM_IsLeapYear(tmp_date.year)) == SCI_TRUE) ? 1 : 0;
        days_ptr = (uint16  *)&(days_from_jan1[i][0]);
       
        realtime->tm_yday = *(days_ptr + tmp_date.mon - 1) + tmp_date.mday - 1;
    }
       
 realtime->tm_isdst  = 0;
}

U32 betweenNowAnd2000App(void)
{
 U32         numSecond;
 SCI_TM_T    sysTime;

 //得到当前系统日期时间
 TM_GetTime(&sysTime);

 numSecond =  (sysTime.tm_year-2000)*365;
 numSecond += (sysTime.tm_yday+(sysTime.tm_year-2000)/4);
 if (sysTime.tm_year > 2000)
   numSecond++;
 numSecond = (numSecond*24+sysTime.tm_hour)*60;
 numSecond = ((numSecond+sysTime.tm_min)*60+sysTime.tm_sec);

 return numSecond;
}


void recoverDateBySeconds(U32 seconds, GUI_TIME *time, GUI_DATE *date)
{
  const U8 dayOfMonth[12]= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
  SCI_ASSERT(time&&date);
  time->mSecond  = (U8)(seconds%60);
  seconds /= 60;
  time->mMinute = (U8)(seconds%60);
  seconds = seconds/60;
  time->mHour = (U8)(seconds%24);
  seconds /= 24;
  date->mYear = 0;
  if (seconds > 365 )
  {
    for (; seconds>365; date->mYear++)
   seconds -=(365+(0x0==date->mYear%4));
  }
  if (seconds>58 && 0x0==date->mYear%4)
   seconds--;
  date->mYear = (U16)(date->mYear+2000);
  for (date->mMonth=0; seconds > dayOfMonth[date->mMonth]; date->mMonth++)
   seconds -= dayOfMonth[date->mMonth];
  date->mMonth++;
  date->mDay = (U8)(seconds+1);

object转化为时间类型

  • 2014年05月15日 10:41
  • 406B
  • 下载

音乐时间转化

  • 2014年05月13日 18:57
  • 4KB
  • 下载

用DateFormat处理时间格式,转化为timestamp形式存入数据库(以XXXX年XX月XX日为例)

今天遇到要用dateformat处理时间的情况,之前没有弄过,因为着急,刚开始没搞清楚原理就乱用,进入一个误区。为了让其他人不要像我一样误解这个类的用法做了个简答的总结。 要处理的问题: 我的情况...

世纪秒和系统时间的转化

  • 2017年08月28日 12:44
  • 128KB
  • 下载

Java获取当前时间及String、datetime、date相互转化

一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowSt...

时间转化为秒数

  • 2013年01月10日 14:36
  • 3.65MB
  • 下载

gnss时间转化

  • 2015年09月22日 14:31
  • 1.81MB
  • 下载

java_时间戳与Date_相互转化

1、时间戳的定义   时间戳是指文件属性里的创建、修改、访问时间。  数字时间戳技术是数字签名技术一种变种的应用。在电子商务交易文件中,时间是十分重要的信息。在书面合同中,文件签署...

时间戳转化

  • 2013年09月03日 13:47
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:时间转化
举报原因:
原因补充:

(最多只允许输入30个字)