一、获取时间戳
void get_local_timestamp
{
/* 获取本地utc时间 */
struct timeval tv;
gettimeofday(&tv, NULL);
/* utc时间 单位 秒*/
long timestamp = tv.tv_sec;
/* utc时间 单位 毫秒 */
long long timestamp = tv.tv_sec*1000 + tv.tv_usec/1000;
/* utc时间 单位 微秒 */
long long timestamp = tv.tv_sec*1000*1000 + tv.tv_usec;
/* utc时间字符串 */
char timeStr[20];
memset(timeStr, 0, sizeof(timeStr));
sprintf(timeStr, "%d", timestamp); // int
sprintf(timeStr, "%ld", timestamp); // long
sprintf(timeStr, "%lld", timestamp); // long long
/* utc时间字符串转换为整型 */
int timeInt = atoi(timeStr); // 转成整型 int
long timeLong = atol(timeStr); // 转成长整型 long
long long timeLLong = atoll(timeStr); // 转成长长整型 long long
}
二、获取本地时间
/* 判断是否为闰年 */
#define IsLeapYear(year) (((year) % 4 == 0) && (((year) % 100 != 0) || ((year) % 400 == 0)))
/* 获取星期 */
int WeekDay(int year, int month, int day)
{
int monthday[] = {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
int days = (year- 1) % 7 + (year- 1) / 4 - (year- 1) / 100 + (year- 1) / 400;
year += monthday[month-1] + day;
if (IsLeapYear(year) && month> 2)
{
days++;
}
return (days % 7);
}
/* 获取utc时间 */
void get_utc_time
{
struct tm *tm;
time_t t;
time(&t);
tm = localtime(&t);
int year = tm->tm_year+1900;
int month = (uint8)tm->tm_mon+1;
int day = (uint8)tm->tm_mday;
int hour = (uint8)tm->tm_hour;
int minite = (uint8)tm->tm_min;
int second = (uint8)tm->tm_sec;
int week = WeekDay(datatime->year,datatime->month,datatime->day);
}
三、获取格林时间,没有加上时区
void get_rtc_time
{
struct tm *tm;
time_t t;
time(&t);
tm = gmtime(&t);
int year = tm->tm_year+1900;
int month = (uint8)tm->tm_mon+1;
int day = (uint8)tm->tm_mday;
int hour = (uint8)tm->tm_hour;
int min = (uint8)tm->tm_min;
int sec = (uint8)tm->tm_sec;
int week = WeekDay(year,month,day);
}