如何在C中从GetTimeofday获取DateTime



如何在C中从getTimeofday中获取DateTime?我需要将tv.tv_sec转换为小时:分钟:第二个XX,没有函数,例如localtime和strftime ...,只需通过计算来获取它。例如TV.TV_SEC/60(%60是分钟

#include <stdio.h>
#include <time.h>
#include<sys/time.h>
int main ()
{
  struct  timeval tv;
  struct  timezone   tz;
  gettimeofday(&tv,&tz);
  printf("TimeZone-1=%dn", tz.tz_minuteswest);
  printf("TimeZone-2=%dn", tz.tz_dsttime);
  printf("TimeVal-3=%dn", tv.tv_sec);
  printf("TimeVal-4=%dn", tv.tv_usec);
  printf ( "Current local time and date: %d-%dn", (tv.tv_sec%    (24*60*60)/3600,tz.tz_minuteswest);
    return 0;
  }

如何通过计算电视和TZ来获得当前的系统小时〜

假设: time_t是自一天开始以来的秒 - 通用时间。这通常是1970年1月1日UTC,假定该代码使用给定的sys/time.h

主要思想是从tv,tz的每个成员中提取数据以形成本地时间。一天的时间,UTC,以tv.tv_sec的几秒钟,距离时区偏移距离和每个DST标志的小时调整。最后,确保结果在主要范围内。

各种类型的问题包括tv的字段未指定为int

避免使用诸如60之类的魔术数字。 SEC_PER_MIN自用代码。

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#define SEC_PER_DAY   86400
#define SEC_PER_HOUR  3600
#define SEC_PER_MIN   60
int main() {
  struct timeval tv;
  struct timezone tz;
  gettimeofday(&tv, &tz);
  printf("TimeZone-1 = %dn", tz.tz_minuteswest);
  printf("TimeZone-2 = %dn", tz.tz_dsttime);
  // Cast members as specific type of the members may be various 
  // signed integer types with Unix.
  printf("TimeVal-3  = %lldn", (long long) tv.tv_sec);
  printf("TimeVal-4  = %lldn", (long long) tv.tv_usec);
  // Form the seconds of the day
  long hms = tv.tv_sec % SEC_PER_DAY;
  hms += tz.tz_dsttime * SEC_PER_HOUR;
  hms -= tz.tz_minuteswest * SEC_PER_MIN;
  // mod `hms` to insure in positive range of [0...SEC_PER_DAY)
  hms = (hms + SEC_PER_DAY) % SEC_PER_DAY;
  // Tear apart hms into h:m:s
  int hour = hms / SEC_PER_HOUR;
  int min = (hms % SEC_PER_HOUR) / SEC_PER_MIN;
  int sec = (hms % SEC_PER_HOUR) % SEC_PER_MIN; // or hms % SEC_PER_MIN
  printf("Current local time: %d:%02d:%02dn", hour, min, sec);
  return 0;
}

输出样本

TimeZone-1 = 360
TimeZone-2 = 1
TimeVal-3  = 1493735463
TimeVal-4  = 525199
Current local time: 9:31:03

相关内容

  • 没有找到相关文章

最新更新