Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过将小时数(例如:00:00)归零将struct tm转换为time\t_C_Date_Datetime_Time_Time.h - Fatal编程技术网

如何通过将小时数(例如:00:00)归零将struct tm转换为time\t

如何通过将小时数(例如:00:00)归零将struct tm转换为time\t,c,date,datetime,time,time.h,C,Date,Datetime,Time,Time.h,这将返回类似于1199246400->2008年1月1日星期二02:00:00 但是我需要把这个拿回1199160000->2008年1月1日星期二00:00:00(现在是午夜) 如果我总是返回1199160000->2008年1月1日星期二00:00:00 我可以使用mktime(&t)-60*120 更明显的是,tm_小时不断变化 所以我需要它总是返回日期+00:00:00,而不管struct tm中设置了多少tm_hour 提前感谢您在当地时间今天凌晨生成Unix时间戳: struct t

这将返回类似于
1199246400
->
2008年1月1日星期二02:00:00

但是我需要把这个拿回
1199160000
->
2008年1月1日星期二00:00:00
(现在是午夜)

如果我总是返回
1199160000
->
2008年1月1日星期二00:00:00

我可以使用
mktime(&t)-60*120

更明显的是,tm_小时不断变化

所以我需要它总是返回
日期+00:00:00
,而不管struct tm中设置了多少tm_hour


提前感谢您在当地时间今天凌晨生成Unix时间戳:

struct tm t;
mktime(&t)
随机时间转换实用程序:

1539241200
  • 如果您不想要当地时间午夜,而是当前小时,请不要将时间归零
  • 如果需要UTC,请使用
    gmtime()
    而不是
    localtime()
    。如果您想将(
    tm_hour>=12
    映射到明天午夜而不是今天午夜),您必须测试要设置的内容。但是请注意,
    mktime()
    标准化了
    tm_year
    tm_mon
    tm_day
    tm_hour
    tm_sece
    中的值,因此您可以简单地使用
    lt->tm_day++
    切换到明天,即使在一个月结束时,它也会正确转换(因此取整并不困难–您只需对条件进行编码:
    如果(lt->tm_hour>=12)lt->tm_day++
    ,然后再将
    lt->tm_hour
    设置为零)
  • 如果要处理任意时间,请将该值作为命令行参数(如果未传递任何参数,则默认为
    time(0)
    ),转换为
    time\u t
    (可能通过
    strtoll()
    long
    变量),然后将其传递给执行其余转换和打印的函数

我们可以讨论将格式设置为
long
和强制转换为
long
是否最好;最好使用
long-long
甚至
intmax\t

在本地时间生成今天午夜的Unix时间戳:

struct tm t;
mktime(&t)
随机时间转换实用程序:

1539241200
  • 如果您不想要当地时间午夜,而是当前小时,请不要将时间归零
  • 如果需要UTC,请使用
    gmtime()
    而不是
    localtime()
    。如果您想将(
    tm_hour>=12
    映射到明天午夜而不是今天午夜),您必须测试要设置的内容。但是请注意,
    mktime()
    标准化了
    tm_year
    tm_mon
    tm_day
    tm_hour
    tm_sece
    中的值,因此您可以简单地使用
    lt->tm_day++
    切换到明天,即使在一个月结束时,它也会正确转换(因此取整并不困难–您只需对条件进行编码:
    如果(lt->tm_hour>=12)lt->tm_day++
    ,然后再将
    lt->tm_hour
    设置为零)
  • 如果要处理任意时间,请将该值作为命令行参数(如果未传递任何参数,则默认为
    time(0)
    ),转换为
    time\u t
    (可能通过
    strtoll()
    long
    变量),然后将其传递给执行其余转换和打印的函数

我们可以讨论将格式设置为
long
和强制转换为
long
是否最好;最好使用
long-long
甚至
intmax\u t

return 1199160000->date+00:00:00您是否正在初始化
t
的成员?不清楚您在问什么。您需要一个代表今天开始的struct tm吗?(昨天是午夜?)或者可能是同一时刻的时间值?您可以只设置
t.tm\u hour=0?我需要以秒为单位返回时间,时间设置为00:00:1199160000,就像返回1199160000->date+00:00:00一样。您是否正在初始化
t
的成员?不清楚您在问什么。您需要一个代表今天开始的struct tm吗?(昨天是午夜?)或者可能是同一时刻的时间值?您可以只设置
t.tm\u hour=0?我需要返回以秒为单位的时间,并将小时设置为00:00:1199160000,就好像它要四舍五入一样