精华内容
下载资源
问答
  • mktime

    2020-11-28 02:27:34
    <div><p>Here is a first stab at <code>time.mktime</code>. I welcome input on how to make it complete. One thing I'm not sure to do is how to handle a two digit year <p>While Python will interpret ...
  • 最近项目在使用mktime时遇到了一个性能问题。先描述一下项目是怎样使用mktime:通常情况下有这样的一种需求,就是通过输入年月日时分秒,来获取时间戳,对应的Python代码可以写成如下形式:def 上面这种情况下,性能...

    394bb57e1ccb9bbfd00b034ab52ea995.png

    最近项目在使用mktime时遇到了一个性能问题。

    先描述一下项目是怎样使用mktime:通常情况下有这样的一种需求,就是通过输入年月日时分秒,来获取时间戳,对应的Python代码可以写成如下形式:

    def 

    上面这种情况下,性能上是没有问题的,直到我们加入了时区的功能:

    class 

    两种情况性能差非常大,如下测试,linux内核4.9,glibc版本2.24,CPU8core,16G内存,测试用例如下:

    for 

    测试结果如下:

    # 有时区版本
    > 

    运行时间差了70倍!

    对两个代码的输出做了比较,发现加了时区后,datetime.timetuple函数输出的结果中tm_isdst=1:

    time

    tm_isdst=1表示使用夏令时计算时间戳,但是如果系统配置是不支持夏令时的话,mktime的计算就会非常耗时。

    具体是什么原因呢?具体要看mktime(3)的内部实现。

    mktime的计算流程:

    mktime的内部主要逻辑在__mktime_internal函数中,基本的思路如下:

    输入的参数与 1970年1月1日0时0分0秒 进行对比,计算一个偏移的时间戳t0

    t0 

    基于t0,利用localtime(3)函数计算一个新的struct tm数据(这个数据是基于本地时区计算得到的),重新利用ydhms_diff函数,计算struct tm于t0的偏差,调整t0值

    for 

    举一个简单的例子,如果我们调用mktime输入的时间是 1970年1月1日0:0:0 ,那么在计算t0时,得到t0的值为0,但是在之后的for循环里面,ranged_convert中会调用localtime重新计算struct tm数据,因为我们处于东八区,计算的结果中tm_hour会等于8,因此我们会利用这个结构调整t0的时间偏移为-28800秒,此时gt=-28800。第二次for循环迭代,ranged_convert的输入参数从0变为-28800,此时计算的gt就和t保存一致了。因此,退出for循环。

    如果没有DST(夏令时),整个mktime就基本完成了。但是,,,之后mktime会调用isdst_differ函数判断输入的dst flag与之前for循环计算的dst flag是否一致,如果不一致将会进入一个多次迭代的过程中。

    /* isdst是用户输入的tm_isdst:在我们的Python例子中等于1
    

    通过上面的代码注释,可以看到,如果mktime传入的dst=1,性能会大打折扣!

    最后,附上一篇文章mktime函数性能分析,这篇文章对mktime做了全面的基准测试。

    附录:

    1. 香港时区夏令时表:Hong Kong Summer Tim
    图片摄于冲绳濑长岛
    展开全文
  • mktime函数实现

    2017-09-22 17:16:31
    mktime函数的纯C语言实现,实现北京时间转换为时间戳。单片机用直接复制粘贴就行了。 。
  • Python time mktime()方法描述Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 ...

    Python time mktime()方法

    描述

    Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。

    如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。

    语法

    mktime()方法语法:

    time.mktime(t)

    参数

    t -- 结构化的时间或者完整的9位元组元素。

    返回值

    返回用秒数来表示时间的浮点数。

    实例

    以下实例展示了 mktime() 函数的使用方法:

    #!/usr/bin/python

    import time

    t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)

    secs = time.mktime( t )

    print "time.mktime(t) : %f" % secs

    print "asctime(localtime(secs)): %s" % time.asctime(time.localtime(secs))

    以上实例输出结果为:

    time.mktime(t) : 1234915418.000000

    asctime(localtime(secs)): Tue Feb 17 17:03:38 2009

    展开全文
  • 定义和用法mktime() 函数用于取得一个日期的 UNIX 时间戳。参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。语法mktime(hour,minute,second,...

    定义和用法

    mktime() 函数用于取得一个日期的 UNIX 时间戳。参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

    语法

    mktime(hour,minute,second,month,day,year,is_dst)//注意这些参数全部为可选

    参数详细说明

    参数

    描述

    hour

    可选。规定小时。

    minute

    可选。规定分钟。

    second

    可选。规定秒。

    month

    可选。规定用数字表示的月。

    day

    可选。规定天。

    year

    可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。

    is_dst

    可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

    自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。

    提示和注释

    注释:在 PHP 5.1 之前,如果该函数的参数非法,则会返回 false。

    mktime() 可以用来做日期计算和验证,对于超出范围的输入它可以自动计算出正确的值来。如下例子:

    echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));

    echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));

    echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));

    echo(date("M-d-Y",mktime(0,0,0,1,1,99)));

    ?>

    输出:

    Jan-05-2002

    Feb-01-2002

    Jan-01-2001

    Jan-01-1999

    展开全文
  • PHP Date / Time 函数定义和用法mktime() 函数返回一个日期的 Unix 时间戳。参数总是表示 GMT 日期...语法mktime(hour,minute,second,month,day,year,is_dst)参数 描述hour 可选。规定小时。minute 可选。规定分钟。...

    PHP Date / Time 函数

    定义和用法

    mktime() 函数返回一个日期的 Unix 时间戳。

    参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

    参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

    语法

    mktime(hour,minute,second,month,day,year,is_dst)参数 描述

    hour 可选。规定小时。

    minute 可选。规定分钟。

    second 可选。规定秒。

    month 可选。规定用数字表示的月。

    day 可选。规定天。

    year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。

    is_dst 可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

    自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。

    提示和注释

    注释:在 PHP 5.1 之前,如果该函数的参数非法,则会返回 false。

    例子

    mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:

    echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));

    echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));

    echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));

    echo(date("M-d-Y",mktime(0,0,0,1,1,99)));

    ?>输出:

    Jan-05-2002

    Feb-01-2002

    Jan-01-2001

    Jan-01-1999

    Example #1 mktime() basic example

    // Set the default timezone to use. Available as of PHP 5.1

    date_default_timezone_set('UTC');

    // Prints: July 1, 2000 is on a Saturday

    echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

    // Prints something like: 2006-04-05T01:02:03 00:00

    echo date('c', mktime(1, 2, 3, 4, 5, 2006));

    ?>

    mktime()是很有用做日期计算和验证,因为它会自动计算出正确的值的范围输入。例如,下面的每一行都会产生字符串“Jan - 01 - 1998”

    echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));

    echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));

    echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));

    echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));

    ?>

    $lastday = mktime(0, 0, 0, 3, 0, 2000);

    echo strftime("Last day in Feb 2000 is: %d", $lastday);

    $lastday = mktime(0, 0, 0, 4, -31, 2000);

    echo strftime("Last day in Feb 2000 is: %d", $lastday);

    ?>

    展开全文
  • Python time mktime()方法描述Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 ...
  • mktime()方法是localtime()方法的反函数。它的参数是结构结构体struct_time或全满9个元素的元组,它返回一个浮点数,为了兼容time()方法。如果输入值不能被表示为一个有效的时间,则OverflowError或ValueError将引发...
  • Python3 time mktime()方法描述Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 ...
  • mktime php Because the ist_dst parameter used in this example was deprecated in PHP 5.1 and removed in PHP 7, it is not safe to rely on thiscode to deliver accurate results in current versions of ...
  • mktime()方法是localtime()反函数。它的参数是struct_time或全9元组,它返回一个浮点数,为了兼容时time()。如果输入值不能表示为有效的时间,那么OverflowError或ValueError错误将被引发。Syntax以下是mktime()方法...
  • mktime 函数使用

    千次阅读 2017-05-22 13:38:09
    mktime函数介绍
  • mktime()函数根据给出的参数返回UNIX时间戳。时间戳是一个长整数,包含了从UNIX纪元(1970年1月1日)到给定时间的秒数。其参数可以从右到左省略,任何省略的参数会被设置成本地日期和时间的当前值,该函数的语法格式...
  • 语法mktime()方法语法:time.mktime(t)参数t — 结构化的时间或者完整的9位元组元素。返回值返回用秒数来表示时间的浮点数。以下实例展示了 mktime() 函数的使用方法:#!/usr/bin/python3import timet = (2016, 2, ...
  • 内容简介:Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。描述Python time mktime() 函数执行与gmtime(), localtime()相反的...
  • mktime函数性能分析

    2021-04-08 13:48:14
    mktime函数性能分析 1月 02, 2019inLinux环境高级编程 mktime函数性能分析 mktime是一个将break-down时间(struct tm)转化为日历时间(time_t)的转换函数。它的转换与struct tm中的 tm_wday、tm_yday无关,当进行...
  • php mktime time

    2017-03-31 16:47:10
    虽然单独写mktime()而不加任何参数如:echo mktime()和echo time()的效果是一样的。但本质上是不一样的。 PHP mktime() 函数 PHP Date / Time 函数 定义和用法 mktime() 函数返回一个日期的 Unix 时间戳。 参数...
  • 虽然单独写mktime()而不加任何参数如:echo mktime()和echo time()的效果是一样的。但本质上是不一样的。PHP mktime() 函数PHP Date / Time 函数定义和用法mktime() 函数返回一个日期的 Unix 时间戳。参数总是表示 ...
  • 虽然单独写mktime()而不加任何参数如:echo mktime()和echo time()的效果是一样的。但本质上是不一样的。PHP mktime() 函数PHP Date / Time 函数定义和用法mktime() 函数返回一个日期的 Unix 时间戳。参数总是表示 ...
  • mktime的使用

    千次阅读 2016-02-28 22:45:03
    mktime的使用
  • Python time mktime()方法描述Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 ...
  • linux mktime

    2012-12-13 09:35:55
    核中的mktime()函数位于kernel/time.c内 该函数主要用于内核启动时,将CMOS中的 年-月-日 时:分:秒 信息转换为距离1970-01-01 00:00:00的秒数   具体定义如下:   [cpp] view plaincopy...
  • s <code>mktime</code> is assuming the wrong timezone - all expected values are exactly one hour away! <pre><code> =================&...
  • Python time mktime()方法描述Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,069
精华内容 1,227
热门标签
关键字:

mktime