精华内容
下载资源
问答
  • datetime
    千次阅读
    2021-01-18 20:46:37

    在本教程中,您将了解MySQL DATETIME数据类型以及如何使用一些方便的函数来有效地操作DATETIME类型数据。

    MySQL DATETIME数据类型简介

    MySQL DATETIME存储包含日期和时间的值。 当您从DATETIME列查询数据时,MySQL会以以下格式显示DATETIME值:

    YYYY-MM-DD HH:MM:SS

    默认情况下,DATETIME的值范围为1000-01-01 00:00:00至9999-12-31 23:59:59。

    DATETIME值使用5个字节进行存储。另外,DATETIME值可以包括格式为YYYY-MM-DD HH:MM:SS [.fraction]例如:2017-12-20 10:01:00.999999的尾数有小数秒。 当包含小数秒精度时,DATETIME值需要更多存储,如下表所示:

    分数秒精度

    存储(字节)

    0

    0

    1,2

    1

    3,4

    2

    5,6

    3

    例如,2017-12-20 10:01:00.999999需要8个字节,2015-12-20 10:01:00需要5个字节,3个字节为.999999,而2017-12-20 10:01:00.9只需要6个字节,小数秒精度为1字节。

    请注意,在MySQL 5.6.4之前,DATETIME值需要8字节存储而不是5个字节。

    MySQL DATETIME与TIMESTAMP类型

    MySQL提供了另一种类似于DATETIME,叫作TIMESTAMP的时间数据类型。

    TIMESTAMP需要4个字节,而DATETIME需要5个字节。 TIMESTAMP和DATETIME都需要额外的字节,用于分数秒精度。

    TIMESTAMP值范围从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。 如果要存储超过2038的时间值,则应使用DATETIME而不是TIMESTAMP。

    MySQL将TIMESTAMP存储在UTC(有时区)值中。 但是,MySQL存储DATETIME值是没有时区的。下面来看看看下面的例子。

    首先,将当前连接的时区设置为+00:00。

    接下来,创建一个名为timestamp_n_datetime的表,它由两列组成:ts和dt,这两列分别使用TIMESTAMP和DATETIME类型,如以下语句 -

    USE testdb;

    CREATE TABLE timestamp_n_datetime (

    id INT AUTO_INCREMENT PRIMARY KEY,

    ts TIMESTAMP,

    dt DATETIME

    );

    然后,将当前日期和时间插入到timestamp_n_datetime表的ts和dt列中,如下语句所示 -

    INSERT INTO timestamp_n_datetime(ts,dt)

    VALUES(NOW(),NOW());

    之后,从timestamp_n_datetime表查询数据,如下语句所示 -

    SELECT

    ts,

    dt

    FROM

    timestamp_n_datetime;

    执行上面查询语句,得到以下结果 -

    +---------------------+---------------------+

    | ts | dt |

    +---------------------+---------------------+

    | 2017-07-26 00:38:14 | 2017-07-26 00:38:14 |

    +---------------------+---------------------+

    1 row in set

    DATETIME和TIMESTAMP列中的两个值相同。

    最后,将连接的时区设置为+03:00,再次从timestamp_n_datetime表查询数据。

    SET time_zone = '+03:00';

    SELECT

    ts,

    dt

    FROM

    timestamp_n_datetime;

    执行上面查询语句,得到以下结果 -

    +---------------------+---------------------+

    | ts | dt |

    +---------------------+---------------------+

    | 2017-07-25 19:38:14 | 2017-07-26 00:38:14 |

    +---------------------+---------------------+

    1 row in set

    可以看到,ts列为TIMESTAMP数据类型的值变了。这是因为在更改时区时,TIMESTAMP列以UTC为单位存储日期和时间值,根据新时区调整TIMESTAMP列的值。

    这意味着如果使用TIMESTAMP数据来存储日期和时间值,则在将数据库移动到位于不同时区的服务器时时间的值可能不一样,所以应该认真考虑这个问题。

    MySQL DATETIME函数

    以下语句使用NOW()函数将变量

    SET @dt = NOW();

    要查询SELECT语句:

    SELECT @dt;

    执行上面查询语句,得到以下结果 -

    mysql> SELECT @dt;

    +---------------------+

    | @dt |

    +---------------------+

    | 2017-07-25 19:41:14 |

    +---------------------+

    1 row in set

    MySQL DATE函数

    要从DATETIME值提取日期部分,请使用DATE函数,如下所示:

    mysql> SELECT DATE(@dt);

    +------------+

    | DATE(@dt) |

    +------------+

    | 2017-07-25 |

    +------------+

    1 row in set

    如果希望根据日期查询数据,但是列中存储的数据是基于日期和时间,则此功能非常有用。

    下面来看看看下面的例子。

    USE testdb;

    CREATE TABLE test_dt (

    id INT AUTO_INCREMENT PRIMARY KEY,

    created_at DATETIME

    );

    INSERT INTO test_dt(created_at)

    VALUES('2017-11-05 20:29:36');

    假设您想知道在2017-11-05当天创建的行,请使用以下查询:

    SELECT

    *

    FROM

    test_dt

    WHERE

    created_at = '2017-11-05';

    执行上面查询语句,得到以下结果 -

    mysql> SELECT

    *

    FROM

    test_dt

    WHERE

    created_at = '2017-11-05';

    Empty set

    它不返回任何行记录。

    这是因为created_at列不仅包含日期,还包含时间。要纠正它,请使用DATE函数,如下所示:

    SELECT

    *

    FROM

    test_dt

    WHERE

    DATE(created_at) = '2017-11-05';

    执行上面查询语句,得到以下结果 -

    +----+---------------------+

    | id | created_at |

    +----+---------------------+

    | 1 | 2017-11-05 20:29:36 |

    +----+---------------------+

    1 row in set

    它按预期返回一行。 如果表有多行,MySQL必须执行全表扫描以查找与条件匹配的行。

    MySQL TIME函数

    要从DATETIME值中提取时间部分,可以使用TIME函数,如以下语句所示:

    SELECT TIME(@dt);

    执行上面查询语句,得到以下结果 -

    mysql> SELECT TIME(@dt);

    +-----------+

    | TIME(@dt) |

    +-----------+

    | 19:41:14 |

    +-----------+

    1 row in set

    MySQL YEAR, QUARTER, MONTH, WEEK, DAY, HOUR,MINUTE和SECOND函数

    要从DATETIME值获取年,季,月,周,日,小时,分和秒,可以使用以下语句中所示的函数:

    SET @dt = NOW();

    SELECT

    HOUR(@dt),

    MINUTE(@dt),

    SECOND(@dt),

    DAY(@dt),

    WEEK(@dt),

    MONTH(@dt),

    QUARTER(@dt),

    YEAR(@dt);

    执行上面查询语句,得到以下结果 -

    +-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+

    | HOUR(@dt) | MINUTE(@dt) | SECOND(@dt) | DAY(@dt) | WEEK(@dt) | MONTH(@dt) | QUARTER(@dt) | YEAR(@dt) |

    +-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+

    | 19 | 42 | 56 | 25 | 30 | 7 | 3 | 2017 |

    +-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+

    1 row in set

    MySQL DATE_FORMAT函数

    要格式化DATETIME值,可以使用DATE_FORMAT函数。 例如,以下语句基于%H:%i:%s - %W%M%Y格式来格式化DATETIME值:

    SET @dt = NOW();

    SELECT DATE_FORMAT(@dt, '%H:%i:%s - %W %M %Y');

    执行上面查询语句,得到以下结果 -

    +-----------------------------------------+

    | DATE_FORMAT(@dt, '%H:%i:%s - %W %M %Y') |

    +-----------------------------------------+

    | 19:43:10 - Tuesday July 2017 |

    +-----------------------------------------+

    1 row in set

    MySQL DATE_ADD函数

    要将间隔添加到DATETIME值,请使用DATE_ADD函数,如下所示:

    SET @dt = NOW();

    SELECT @dt start,

    DATE_ADD(@dt, INTERVAL 1 SECOND) '1 second later',

    DATE_ADD(@dt, INTERVAL 1 MINUTE) '1 minute later',

    DATE_ADD(@dt, INTERVAL 1 HOUR) '1 hour later',

    DATE_ADD(@dt, INTERVAL 1 DAY) '1 day later',

    DATE_ADD(@dt, INTERVAL 1 WEEK) '1 week later',

    DATE_ADD(@dt, INTERVAL 1 MONTH) '1 month later',

    DATE_ADD(@dt, INTERVAL 1 YEAR) '1 year later';

    执行上面查询语句,得到以下结果 -

    +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

    | start | 1 second later | 1 minute later | 1 hour later | 1 day later | 1 week later | 1 month later | 1 year later |

    +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

    | 2017-07-25 19:43:22 | 2017-07-25 19:43:23 | 2017-07-25 19:44:22 | 2017-07-25 20:43:22 | 2017-07-26 19:43:22 | 2017-08-01 19:43:22 | 2017-08-25 19:43:22 | 2018-07-25 19:43:22 |

    +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

    1 row in set

    MySQL DATE_SUB函数

    要从DATETIME值中减去一个间隔值,可以使用DATE_SUB函数,如下所示:

    SET @dt = NOW();

    SELECT @dt start,

    DATE_SUB(@dt, INTERVAL 1 SECOND) '1 second before',

    DATE_SUB(@dt, INTERVAL 1 MINUTE) '1 minute before',

    DATE_SUB(@dt, INTERVAL 1 HOUR) '1 hour before',

    DATE_SUB(@dt, INTERVAL 1 DAY) '1 day before',

    DATE_SUB(@dt, INTERVAL 1 WEEK) '1 week before',

    DATE_SUB(@dt, INTERVAL 1 MONTH) '1 month before',

    DATE_SUB(@dt, INTERVAL 1 YEAR) '1 year before';

    执行上面查询语句,得到以下结果 -

    +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

    | start | 1 second before | 1 minute before | 1 hour before | 1 day before | 1 week before | 1 month before | 1 year before |

    +

    MySQL DATE_DIFF函数

    要计算两个DATETIME值之间的差值,可以使用DATEDIFF函数。 请注意,DATEDIFF函数仅在计算中考虑DATETIME值的日期部分。

    请参见以下示例。

    首先,创建一个名为datediff_test的表,其中只有一个dt列,其数据类型为DATETIME。

    USE testdb;

    CREATE TABLE datediff_test (

    dt DATETIME

    );

    其次,将一些行插入到datediff_test表中。

    INSERT INTO datediff_test(dt)

    VALUES('2017-04-30 07:27:39'),

    ('2017-05-17 22:52:21'),

    ('2017-05-18 01:19:10'),

    ('2017-05-22 14:17:16'),

    ('2017-05-26 03:26:56'),

    ('2017-06-10 04:44:38'),

    ('2017-06-13 13:55:53');

    第三,使用DATEDIFF函数将当前日期时间与datediff_test表的每一行中的值进行比较。

    SELECT

    dt,

    DATEDIFF(NOW(), dt)

    FROM

    datediff_test;

    执行上面查询语句,得到以下结果 -

    +---------------------+---------------------+

    | dt | DATEDIFF(NOW(), dt) |

    +---------------------+---------------------+

    | 2017-04-30 07:27:39 | 86 |

    | 2017-05-17 22:52:21 | 69 |

    | 2017-05-18 01:19:10 | 68 |

    | 2017-05-22 14:17:16 | 64 |

    | 2017-05-26 03:26:56 | 60 |

    | 2017-06-10 04:44:38 | 45 |

    | 2017-06-13 13:55:53 | 42 |

    +---------------------+---------------------+

    7 rows in set

    在本教程中,您已经了解了MySQL DATETIME数据类型和一些有用的DATETIME函数。

    ¥ 我要打赏

    纠错/补充

    收藏

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    更多相关内容
  • datetime库:Python日期与时间值管理计算

    千次阅读 多人点赞 2021-04-10 19:15:15
    datetime库也用于时间日期的处理,主要用于完成日期和时间的解析,格式化和算术运算。本篇,将完整的介绍datetime库的应用知识。 获取当前时间 与time库一样,datetime库也有获取当前时间的函数:datetime.date....

    前言

    datetime库也用于时间日期的处理,主要用于完成日期和时间的解析,格式化和算术运算。本篇,将完整的介绍datetime库的应用知识。

    datetime.date

    与time库一样,datetime库也有获取当前日期的类,日历日期值用datetime.date表示。比如datetime.date.today()。

    具体代码如下:

    import datetime
    
    today = datetime.date.today()
    print(today)
    now = today.timetuple()
    print("年:", now.tm_year)
    print("月:", now.tm_mon)
    print("日:", now.tm_mday)
    print("时:", now.tm_hour)
    print("分:", now.tm_min)
    print("秒:", now.tm_sec)
    print("星期:", now.tm_wday)
    print("今年过了{0}天".format(now.tm_yday))
    

    运行之后,效果如下:
    年月日

    datetime.date.today()获取的是当前的日期,并不包含时间数据。而timetuple()函数返回的是time库中常用的time.struct_time结构体,这样你就可以像使用struct_time结构体一样,获取单一的时间数据,不过因为datetime.date.today()只有日期,所以时间数据为0。

    当然,这只是简单的应用。其实通过datetime.date.today()获取的对象,还有其他方法供大家使用。下面,博主分别列出所有方法:

    方法名参数意义
    toordinal()无参数返回日期的多边格里高利度序数,其中1年1月1日具有序数1。如果1年1月1日具有序数1,则1年1月2日将具有序数2,依此类推。
    fromordinal()1个整型参数返回多边格里高利度序数对应的日期datetime.date对象
    ctime()无参数获取当前日期完整数据,与time.ctime()类似,只是时间是00:00:00
    weekday()无参数获取星期几,[0-6]
    replace()3个整型参数:年,月,日将数字日期转换为datetime.date对象时间
    fromisocalendar()3个整型参数:提供年、该年第几个星期、该星期几日,返回一个datetime.date对象时间
    fromisoformat()1个字符串日期参数(字符串格式必须为YYYY-mm-dd)将字符串转换为datetime.date对象时间
    fromtimestamp()1个float时间参数(比如time.time())返回时间戳格式的日期字符串,timestamp为时间戳
    isoformat()无参数返回格式 YYYY-MM-DD 来表示日期的字符串,这是 date.fromisoformat() 的逆操作。
    isocalendar()无参数返回年,该年的第几周以及周几,返回值元组类型
    isoweekday()无参数返回星期几(这个是1-7)
    today()无参数返回今天的日期
    strftime()格式字符串参数(比如%Y:%m:%d)将datetime.date对象时间转换为指定的字符串格式

    测试代码如下:

    import datetime
    import time
    
    today = datetime.date.today()
    #返回日期的多边格里高利度序数,其中1年1月1日具有序数1。如果1年1月1日具有序数1,则1年1月2日将具有序数2,依此类推。
    print(today.toordinal())
    #返回多边格里高利度序数对应的日期datetime.date对象
    print(today.fromordinal(1))
    #获取当前日期完整数据,与time.ctime()类似,只是时间是00:00:00
    print(today.ctime())
    #获取星期几,[0-6]
    print(today.weekday())
    #将数字日期转换为datetime.date对象时间
    print(today.replace(2020, 10, 10))
    #提供年、该年第几个星期、该星期几日,返回一个datetime.date对象时间
    print(today.fromisocalendar(2020, 20, 6))
    #将字符串转换为datetime.date对象时间,字符串格式必须为YYYY-mm-dd
    print(today.fromisoformat("2020-10-10"))
    #返回时间戳格式的日期字符串,timestamp为时间戳
    print(today.fromtimestamp(time.time()))
    #返回格式 YYYY-MM-DD 来表示日期的字符串,这是 date.fromisoformat() 的逆操作。
    print(today.isoformat())
    #返回年,该年的第几周以及周几,返回值元组类型
    print(today.isocalendar())
    #返回星期几(这个是1-7)
    print(today.isoweekday())
    #返回今天的日期
    print(today.today())
    #输出年月日
    print(today.year, today.month, today.day)
    #输入最小日期与最大日期
    print(today.min, today.max)
    #将datetime.date对象时间转换为指定的字符串格式
    print(today.strftime("%Y:%m:%d"))
    

    运行之后,效果如下:
    datetime.date类用法

    datetime.time

    datetime.time模块:包含时间的访问和转换功能。详细的用法如下:

    方法名参数意义
    replace()3个整型参数:时,分,秒替换时间值,返回datetime.time时间
    strftime()1个格式化时间字符串参数(比如%H:%M:%S)输出指定格式时间的字符串
    fromisoformat()1个字符串时间参数返回对应字符串datetime.time对象
    isoformat()可选参数默认返回时间字符串;指定时间具体值,返回指定时间字符串(比如timespec=‘hours’)返回小时字符串数

    测试代码如下:

    import datetime
    
    t = datetime.time(19, 20, 20)
    # 获取时间的最大值与最小值
    print(t.min, t.max)
    # 获取当前输入时间的时,分,秒数据
    print(t.hour, t.minute, t.second, t.microsecond, t.tzinfo)
    # 时间分辨率,datetime.time被限制为整微妙值
    print(t.resolution)
    # 替换时间值,返回datetime.time时间
    print(t.replace(15, 30, 30))
    # 输出指定格式时间的字符串
    print(t.strftime("%H-%M-%S"))
    # 返回对应字符串datetime.time对象
    print(t.fromisoformat("11:11:11"))
    # 返回指定时间字符串
    print(t.isoformat(timespec='hours'))
    

    运行之后,效果如下:
    效果

    datetime.timedelta

    在time库中,支持时间的运算。而datetime库也给我们提供了日期的运算。其中,计算过去或者将来的时间会用到datetime.timedelta类。datetime.timedelta的内部值按日,秒,微秒存储。

    构造函数

    首先,我们来看看其构造函数的详细定义:

    def __new__(cls, days=0, seconds=0, microseconds=0,
                    milliseconds=0, minutes=0, hours=0, weeks=0):
    

    可以看出来,datetime.timedelta的构造方法,就是用来构造天,时,分,秒的。简单的说,它就是计算中的参数,比如要计算减去一天后的日期,就要创建一个一天长度的datetime.timedelta对象。

    日期运算

    既然了解了datetime.timedelta就是一个中间参数。下面,我们来进行日期的加减法运算,具体代码如下:

    import datetime
    
    today = datetime.date.today()
    print("今天日期:", today)
    one_day = datetime.timedelta(days=1)
    yesterday = today - one_day
    tomorrow = today + one_day
    print("昨天日期", yesterday)
    print("明天日期", tomorrow)
    print("昨天与明天相差{0}天", (yesterday - tomorrow).days)
    print("明天与昨天相差{0}天", tomorrow - yesterday)
    

    运行之后,效果如下:

    日期运算

    比较日期

    在实际的应用中,我们除了会计算日期相差的时间之外,我们还可能会比较两个日期的大小。话不多说,我们直接代码学习:

    import datetime
    
    # 日期比较
    d1 = datetime.date.today()
    d2 = d1 + datetime.timedelta(days=1)
    print(d1 > d2)
    # 时间比较
    t1 = datetime.time(19, 20, 20)
    t2 = datetime.time(18, 20, 20)
    print(t1 > t2)
    

    运行之后,效果如下:
    时间对比

    计算秒数

    在我们没有完全掌握datetime库之前,我们会怎么计算秒数?

    当然是直接计算,比如1小时的秒数计算,我们会乘以3600。其他时间依次类推。但其实datetime.timedelta有一个非常简单的直接秒数转换函数:total_seconds()。

    详细使用方式如下:

    import datetime
    
    timeD = datetime.timedelta(days=1)
    print(timeD.total_seconds())
    

    这里,我们计算了一天的秒数,效果如下:
    秒计算

    datetime.datetime

    其实,datetime库下面还有一个datetime类,该类可以存储由日期和时间分量构成的值。与前面的datetime.date与datetime.time有本质的区别,datetime.datetime是前面两者的结合,即有日期也有时间。

    我们先来获取一下,我们常用的时间数值:

    import datetime
    
    print("当前时间:",datetime.datetime.now())
    print("当前时间:",datetime.datetime.today())
    print("UTC时间:",datetime.datetime.utcnow())
    
    date_str = ["year", "month", "day", "hour", "minute", "second", "microsecond", ]
    now = datetime.datetime.now()
    for attr in date_str:
        print("{0}:{1}".format(attr, getattr(now, attr)))
    

    这里,我们通过反射获取到了时间的各个值。控制台输出如下:
    datetime.datetime

    combine()

    既然datetime库提供了单独的时间以及单独的日期类,那么肯定有函数能将日期与时间进行组合。没错,datetime.daetime.combine()函数就能实现日期与时间的组合。具体代码如下:

    import datetime
    
    t = datetime.time(19, 20, 20)
    d = datetime.date.today()
    td = datetime.datetime.combine(d, t)
    print(td)
    

    运行之后,时间与日期就组合成功。
    组合
    至于其他常用的函数,如下表所示:

    方法名参数意义
    fromisocalendar()提供3个参数:年,第几星期,第几天返回指定的日期时间(因为没提供时间所以时间为00:00:00)
    isoformat()1个datetime.datetime参数返回ISO格式的日期UTC字符串
    utcfromtimestamp()1个time.time()类型的参数返回UTC日期时间
    utctimetuple()1个datetime.datetime参数返回struct_time结构体时间
    timestamp()1个datetime.datetime参数返回datetime的时间戳
    fromisoformat()1个日期时间字符串返回datetime.daetime对象时间
    ctime()1个datetime.datetime参数返回英文格式的时间字符串
    time()1个datetime.datetime参数返回指定日期的时间
    isoweekday()1个datetime.date参数返回星期几[1-7]
    strftime()2个参数,一个datetime.datetime参数,一个格式字符串转换为指定格式的日期时间格式
    strptime()2个参数,一个日期时间字符串,一个日期时间格式将格式化的字符串转换为datatime.datetime实例
    isocalendar()1个datetime.date参数返回一个 3 元组 (ISO 年份, ISO 周序号, ISO 周日期)。
    toordinal()1个datetime.date参数返回日期的多边格里高利度序数,其中1年1月1日具有序数1。如果1年1月1日具有序数1,则1年1月2日将具有序数2,依此类推。
    fromordinal()1个整型数字返回多边格里高利度序数对应的日期datetime.datetime对象
    weekday()1个datetime.date参数返回星期几,[0-6]
    date()1个datetime.datetime参数返回日期值
    timetz()1个datetime.datetime参数此方法的返回类型是具有相同时,分,秒,微秒,倍数和tzinfo的时间对象。

    测试代码如下:

    import datetime
    import time
    
    #返回日期值
    print(datetime.datetime.date(datetime.datetime.now()))
    #返回星期几,[0-6]
    print(datetime.datetime.weekday(datetime.date.today()))
    #返回日期的多边格里高利度序数,其中1年1月1日具有序数1。如果1年1月1日具有序数1,则1年1月2日将具有序数2,依此类推。
    print(datetime.datetime.toordinal(datetime.date.today()))
    #返回多边格里高利度序数对应的日期datetime.datetime对象
    print(datetime.datetime.fromordinal(123))
    #返回一个 3 元组 (ISO 年份, ISO 周序号, ISO 周日期)。
    print(datetime.datetime.isocalendar(datetime.date.today()))
    #将格式化的字符串转换为datatime.datetime实例
    print(datetime.datetime.strptime("Mon Apr 12 14:13:S 2021", "%a %b %d %H:%M:S %Y"))
    # 转换为指定格式的日期时间格式
    print(datetime.datetime.strftime(datetime.datetime.now(), "%a %b %d %H:%M:S %Y"))
    # 返回星期几,值为[1-7]
    print(datetime.datetime.isoweekday(datetime.date.today()))
    # 返回当前时间
    print(datetime.datetime.time(datetime.datetime.now()))
    # 返回英文格式的时间字符串
    print(datetime.datetime.ctime(datetime.datetime.now()))
    # 返回ISO格式的日期UTC字符串
    print(datetime.datetime.isoformat(datetime.datetime.now()))
    # 返回指定的日期时间(因为没提供时间所以时间为00:00:00)
    print(datetime.datetime.fromisocalendar(2020, 6, 6))
    # 返回datetime.daetime对象时间
    print(datetime.datetime.fromisoformat("2020-01-01 13:00:00"))
    # 返回struct_time结构体时间
    print(datetime.datetime.utctimetuple(datetime.datetime.now()))
    # 返回UTC日期时间
    print(datetime.datetime.utcfromtimestamp(time.time()))
    # 返回datetime的时间戳
    print(datetime.datetime.timestamp(datetime.datetime.now()))
    

    运行之后,效果如下:
    datetime

    astimezone(时区)

    在datetime.datetime中,时区是由tzinfo的子类表示。由于tzinfo是一个抽象类,实际使用时,应该需要定义它的子类,并为一些方法提供适当的实现。

    具体使用方法如下:

    import datetime
    
    one = datetime.timezone(datetime.timedelta(hours=-6))
    two = datetime.timezone(datetime.timedelta(hours=6))
    d = datetime.datetime.now(one)
    print(d)
    print(d.astimezone(datetime.timezone.utc))
    print(d.astimezone(two))
    print(d.astimezone())
    

    运行之后,效果如下:
    时区

    这里不同的时区,就是通过加减时间决定的。而控制台输出的±后面的值,都是相对于UTC而言。daetime库的讲解到这里就全部讲解完成了,相信只要认真看完本篇,对于日期,时间的操作,想必手到擒来。

    展开全文
  • Python datetime模块

    千次阅读 2020-12-03 13:17:43
    一、简介在 python 中,datetime 是对日期数据进行处理的主要模块。无论何时你需要用 python 处理日期数据,datetime 都能提供所需方法。datetime 是 python 标准库的一部分,这意味着你无须单独安装它。你可以用...

    一、简介

    在 python 中,datetime 是对日期数据进行处理的主要模块。无论何时你需要用 python 处理日期数据,datetime 都能提供所需方法。datetime 是 python 标准库的一部分,这意味着你无须单独安装它。

    你可以用如下语句直接导入:

    import datetime

    datetime 模块共有以下类:

    datetime类

    date 类

    time 类

    timedelta 类

    二、获取当前日期和时间

    datetime.datetime.now() 方法可以给出当前的日期时间:

    datetime.datetime.now()#> datetime.datetime(2019, 2, 15, 18, 54, 58, 291224)

    输出结果是一个包含当前时区日期和时间的 datetime.datetime 对象,输出顺序为:年、月、日、时、分、秒、微妙。

    若想只获取日期信息,请使用 datetime.date.today():

    datetime.date.today()#> datetime.date(2019, 2, 15)

    返回结果为 datetime.date 对象而不是 datetime.datetime,因为 today() 是datetime.date 类中的方法,它不包含时间信息。

    print输出:

    print(datetime.date.today())#> 2019-02-15

    三、创建 datetime 对象

    上面介绍了如何创建当前时间的对象,但如何创建一个任意日期和时间的对象呢?比方说这个时间:2001-01-31::10:51:00

    1、你可以按照相同顺序将其传入 datetime.datetime():

    datetime.datetime(2001, 1, 31, 10, 51, 0)#> datetime.datetime(2001, 1, 31, 10, 51)

    2、也可以用 unixtimestamp 创建一个 datetime,unixtimestamp 只是以 1970年1月1日为起点记录的秒数,例如:

    mydatetime = datetime.datetime.fromtimestamp(528756281)

    mydatetime#> datetime.datetime(1986, 10, 4, 2, 14, 41)

    还可以将 datetime 转换回 unixtimestamp,如下:

    mydatetime.timestamp()#> 528756281.0

    四、将字符串解析为 datetime

    dateutil 中的 parser 模块可以帮我们将几乎任何形式的字符串日期数据解析为datetime 对象:

    from dateutil.parser importparse

    parse('January 31, 2010')#> datetime.datetime(2010, 1, 31, 0, 0)

    from dateutil.parser importparse

    parse('31, March 31, 2010, 10:51pm')

    五、将 datetime 对象转换为任何格式的日期

    可以用 strftime() 方法将 datetime 对象转换为几乎任何日期格式的表现形式。你需要传入正确日期格式的表示符号作为参数:

    dt = datetime.datetime(2001, 1, 31, 10, 51, 0)print(dt.strftime('%Y-%m-%d::%H-%M'))#> 2001-01-31::10-51

    %a 星期几的简写%A 星期几的全称%b 月分的简写%B 月份的全称%c 标准的日期的时间串%C 年份的后两位数字%d 十进制表示的每月的第几天%D 月/天/年%e 在两字符域中,十进制表示的每月的第几天%F 年-月-日%g 年份的后两位数字,使用基于周的年%G 年分,使用基于周的年%h 简写的月份名%H 24小时制的小时%I 12小时制的小时%j 十进制表示的每年的第几天%m 十进制表示的月份%M 十时制表示的分钟数%n 新行符%p 本地的AM或PM的等价显示%r 12小时的时间%R 显示小时和分钟:hh:mm%S 十进制的秒数%t 水平制表符%T 显示时分秒:hh:mm:ss%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)%U 第年的第几周,把星期日做为第一天(值从0到53)%V 每年的第几周,使用基于周的年%w 十进制表示的星期几(值从0到6,星期天为0)%W 每年的第几周,把星期一做为第一天(值从0到53)%x 标准的日期串%X 标准的时间串%y 不带世纪的十进制年份(值从0到99)%Y 带世纪部分的十制年份%z,%Z 时区名称,如果不能得到时区名称则返回空字符。%% 百分号

    格式化字符串的时间格式

    例:将以下 datetime 对象转换为该表示方法:’31 January, 2001, Wednesday’

    #Input

    dt = datetime.datetime(2001, 1, 31)

    dt.strftime('%d %B, %Y, %A')

    datetime 对象包含很多与日期时间相关的实用功能。

    #create a datatime obj

    dt = datetime.datetime(2019, 2, 15)#1. Get the current day of the month

    dt.day #> 31

    #2. Get the current day of the week

    dt.isoweekday() #> 5 --> Friday

    #3. Get the current month of the year

    dt.month #> 2 --> February

    #4. Get the Year

    dt.year #> 2019

    六、datetime.time 类

    datetime.time() 可以用来只表示时间部分,而不含日期。默认的输出形式为:时、分、秒、微秒。

    #hours, minutues, seconds, microseconds

    tm = datetime.time(10,40,10,102301)

    tm#> datetime.time(10, 40, 10, 102301)

    七、datetime.timedelta 类

    'TimeDeltas' 表示具体时间实例中的一段时间。你可以把它们简单想象成两个日期或时间之间的间隔。

    它常常被用来从 datetime 对象中添加或移除一段特定的时间。

    要想创建一个 datetime.timedelta 类,你需要将指定的时间段传递给类的构造函数。可选参数包含:weeks,days (默认), hours, minutes, seconds, microseconds

    td = datetime.timedelta(days=30)

    td

    现在我有一个表示30天间隔的 'timedelta' 对象。我们来计算从现在开始,再过30天的日期:

    print(datetime.date.today() +td)#> 2019-03-17

    同样,你也可以减掉 timedeltas。

    timedeltas 提供的另一个便利是,你可以创建以天、星期、小时表示的任意的时间组合。它可以将组合简化:

    td = datetime.timedelta(weeks=1, days=30, hours=2, minutes=40)

    td#> datetime.timedelta(days=37, seconds=9600)

    如果将两个 datetime 对象相减,就会得到表示该时间间隔的 timedelta 对象:

    dt1 = datetime.datetime(2002, 1, 31, 10, 10, 0)

    dt2= datetime.datetime(2001, 1, 31, 10, 10, 0)

    dt1-dt2#> datetime.timedelta(days=365)

    同样地,将两个时间间隔相减,可以得到另一个 timedelta 对象:

    td1 = datetime.timedelta(days=30) #30 days

    td2 = datetime.timedelta(weeks=1) #1 week

    td1 -td2#> datetime.timedelta(days=23)

    八、如何操作时区信息?

    对于时区,python 推荐的 pytz 模块并不是内置的标准库。你需要单独安装它。(在终端或命令框中输入 'pip install pytz' 即可)

    那么如何将时区设置为特定的 datetime 呢?

    只需在创建 datetime 时,将 pytz 对应的 timezone 对象传递给 tzinfo 参数。接下来,datetime 就会按所设置的时区进行显示。下面我们创建一个 UTC 时区的 datetime 对象:

    importpytz

    datetime.datetime(2001, 1, 31, 10, 10, 0, tzinfo=pytz.UTC)

    UTC 是 pytz 模块的内置属性。那么,如何设置不同的时区呢?

    你可以在 pytz.all_timezones 中查找你所需的时区。然后使用 pytz.timezone() 来创建相应的时区对象,它会被传递给 tzinfo 参数。

    #See available time zones

    pytz.all_timezones[:5]#> ['Africa/Abidjan',#> 'Africa/Accra',#> 'Africa/Addis_Ababa',#> 'Africa/Algiers',#> 'Africa/Asmara']

    #Set to particular timezone

    dt_in = datetime.datetime(2001, 1, 31, 3, 30, 0, 0, tzinfo=pytz.timezone('Asia/Tokyo'))

    dt_in#> datetime.datetime(2001, 1, 31, 3, 30, tzinfo=)

    你可以尝试将时区转换为特定的目标时区:

    tgt_timezone = pytz.timezone('Africa/Addis_Ababa')

    dt_in.astimezone(tgt_timezone)

    九、实例练习

    题目挑战规则:

    不许看日历

    即使可以通过脑算回答的问题,也要用 python 解决

    练习 1:如何将字符串日期解析为 datetime 格式?

    【容易】将以下字符串日期解析为日期格式:

    #Input

    s1 = "2010 Jan 1"s2= '31-1-2000's3= 'October10, 1996, 10:40pm'

    #Deisred Output#> 2010-01-01 00:00:00#> 2000-01-31 00:00:00#> 2019-10-10 22:40:00

    参考答案:

    #Input

    s1 = "2010 Jan 1"s2= '31-1-2000's3= 'October10,1996, 10:40pm'

    #Solution

    from dateutil.parser importparseprint(parse(s1))print(parse(s2))print(parse(s3))

    2010-01-01 00:00:00

    2000-01-31 00:00:00

    2019-10-10 22:40:00

    练习2:距离你出生那天过去多少天了?

    【容易】距离你出生那天过去多少天了?

    #Input

    bday = 'Oct 2, 1869' #use bday

    参考答案:

    #Input

    bday = 'Oct 2, 1869'

    importdatetimefrom dateutil.parser importparse#Solution

    td = datetime.datetime.now() -parse(bday)

    td.days

    54558

    练习3:如何统计两个日期之间有多少个星期六?

    【中等】统计两个日期之间的星期六个数:

    #Input

    importdatetime

    d1= datetime.date(1869, 1, 2)

    d2= datetime.date(1869, 10, 2)#Desired Output#> 40

    参考答案:

    #Input

    importdatetime

    d1= datetime.date(1869, 1, 2)

    d2= datetime.date(1869, 10, 2)#Solution

    delta = d2 - d1 #timedelta

    #Get all dates

    dates_btw_d1d2 = [(d1 + datetime.timedelta(i)) for i in range(delta.days + 1)]

    n_saturdays=0for d indates_btw_d1d2:

    n_saturdays+= int(d.isoweekday() == 6)print(n_saturdays)

    40

    练习4:距离你今年的下一个生日还有多少天?

    【容易】距离你今年的下一个生日还有多少天?

    #Input

    bday = 'Oct 2, 1869' #use b'day

    参考答案:

    #Input

    bday = 'Oct 2, 1869' #Enter birthday here

    importdatetimefrom dateutil.parser importparse#Solution

    bdate =parse(bday)

    current_bdate= datetime.date(year=datetime.date.today().year, month=bdate.month, day=bdate.day)

    td= current_bdate -datetime.date.today()

    td.days

    228

    练习5:如何计算不规则日期序列中的连续时间间隔?

    【容易】计算以下列表中连续的天数:

    #Input

    ['Oct, 2, 1869', 'Oct, 10, 1869', 'Oct, 15, 1869', 'Oct, 20, 1869','Oct, 23, 1869']#Desired Output#> [8, 5, 5, 3]

    参考答案:

    #Input

    datestrings = ['Oct, 2, 1869', 'Oct, 10, 1869', 'Oct, 15, 1869', 'Oct, 20, 1869', 'Oct, 23, 1869']#Solution

    importdatetimefrom dateutil.parser importparseimportnumpy as np

    dates= [parse(d) for d indatestrings]print([d.days for d in np.diff(dates)])

    [8, 5, 5, 3]

    练习6:如何将天数转换为秒数?

    【容易】将距离你下一个生日的天数转换为秒数。

    #Input

    importdatetime

    bdate= datetime.date(1869, 10, 2)

    td= datetime.date.today() - bdate

    参考答案:

    #Input

    importdatetime

    bdate= datetime.date(1869, 10, 2)

    td= datetime.date.today() -bdate#Solution

    td.total_seconds()

    4713811200.0

    练习7:如何将给定日期转换为当天开始的时间?

    【容易】将给定日期转换为当天开始的时间:

    #Input

    importdatetime

    date= datetime.date(1869, 10, 2)#Desired Output#> 1869-10-02 00:00:00

    参考答案:

    from datetime importdate, datetime

    d= date(1869, 10, 2)print(datetime.combine(d, datetime.min.time()))#> 1869-10-02 00:00:00

    1869-10-02 00:00:00

    练习8:如何在 python 中获取任意给定日期所在月份的最后一天?

    【容易】使用 python 获取以下给定日期所在月份的最后一天:

    #Input

    importdatetime

    dt= datetime.date(1952, 2, 12)#Desired Output#> 29

    参考答案:

    #Input

    importdatetime

    dt= datetime.date(1952, 2, 12)#Solution

    importcalendar

    calendar.monthrange(dt.year,dt.month)[1]

    29

    练习9:1948年的二月份有多少个星期日?

    【中等】统计1948年二月有几个星期日

    参考答案:

    importdatetimefrom calendar importmonthrange

    d1= datetime.date(1948, 2, 1)

    n_days= monthrange(1948, 2)#Get all dates

    dates_btw_d1d2 = [(d1 + datetime.timedelta(i)) for i in range(n_days[1])]

    n_sundays=0for d indates_btw_d1d2:

    n_sundays+= int(d.isoweekday() == 6)print(n_sundays) #> 4

    >4

    练习10:如何将给定日期转换为 "mmm-dd, YYYY" 的格式?

    【容易】将给定日期转换为 “mmm-dd, YYYY” 的格式:

    #input

    importdatetime

    d1= datetime.date('2010-09-28')#Desired output#> 'Sep-28, 2010'

    参考答案:

    #Input

    importdatetime

    d1= datetime.date(2010, 9, 28)#Solution

    d1.strftime('%b-%d, %Y')

    'Sep-28, 2010'

    练习11:如何将日期时间转换为 Year-Qtr 的格式?

    【容易】将以下日期时间转换为 Year-Qtr 的格式:

    #input

    importdatetime

    d1= datetime.datetime(2010, 9, 28, 10, 40, 59)#Desired output#> '2010-Q3'

    参考答案:

    #input

    importdatetime

    d1= datetime.datetime(2010, 9, 28, 10, 40, 59)#Solution

    f'{d1.year}-Q{d1.month//4 + 1}'

    '2010-Q3'

    练习12:如何将 unix 时间戳转换为易读的日期形式?

    【中等】将以下 unix 时间戳转换为易读的日期形式:

    #Input

    unixtimestamp = 528756281

    #Desired Output#> 04-October-1986

    参考答案:

    #Input

    unixtimestamp = 528756281

    #Solution

    importdatetime

    dt= datetime.datetime.fromtimestamp(528756281)

    dt.strftime('%d-%B-%Y')

    '04-October-1986'

    练习13:如何在不同的时区获取时间?

    【中等】如果 "亚洲/东京" 当前时间为 ‘2001-01-31::3:30:0’,那么 "亚洲/加尔各答" 是什么时间?

    importdatetime

    dt_in= datetime.datetime(2001, 1, 31, 3, 30, 0, 0, tzinfo=pytz.timezone('Asia/Tokyo'))#Desired Solution#> datetime.datetime(2001, 1, 30, 23, 41, tzinfo=)

    参考答案:

    importdatetime

    dt_in= datetime.datetime(2001, 1, 31, 3, 30, 0, 0, tzinfo=pytz.timezone('Asia/Tokyo'))#Solution

    india_tz = pytz.timezone('Asia/Kolkata')

    dt_in.astimezone(india_tz)

    datetime.datetime(2001, 1, 30, 23, 41, tzinfo=)

    练习14:如何填写给定的不规则日期序列中的缺失日期?

    【困难】填写以下不规则日期序列中的缺失日期:

    #Input

    ['Oct 2, 1869', 'Oct 5, 1869', 'Oct 7, 1869', 'Oct 9, 1869']#Desired Output#> ['Oct 02, 1869', 'Oct 03, 1869', 'Oct 04, 1869', 'Oct 05, 1869',#> 'Oct 06, 1869', 'Oct 07, 1869', 'Oct 08, 1869', 'Oct 09, 1869']

    参考答案:

    #Input

    datestrings = ['Oct 2, 1869', 'Oct 5, 1869', 'Oct 7, 1869', 'Oct 9, 1869']#Solution

    importdatetimefrom dateutil.parser importparseimportnumpy as np

    dates= [parse(d) for d indatestrings]

    d1=np.min(dates)

    d2=np.max(dates)

    delta= d2 - d1 #timedelta

    #Get all dates

    dates_btw_d1d2 = [(d1 + datetime.timedelta(i)).strftime('%b %d, %Y') for i in range(delta.days + 1)]print(dates_btw_d1d2)

    ['Oct 02, 1869', 'Oct 03, 1869', 'Oct 04, 1869', 'Oct 05, 1869', 'Oct 06, 1869', 'Oct 07, 1869', 'Oct 08, 1869', 'Oct 09, 1869']

    展开全文
  • 【python】datetime模块计算时间差

    千次阅读 2022-04-24 10:49:07
    还可以进行时间差计算 3.1 时间差计算 import datetime datetime.datetime.now() # 生成一个datetime.datetime对象,包含了年、月、日、时、分、秒、毫秒七个参数 # 可以直接获取年、月、日等数值: t = datetime....

    一、问题背景

    最近有小伙伴反馈接口平台的测试计划执行耗时显示有误,比如执行实际时长超过10s,但是报告中显示总耗时小于1s
    在这里插入图片描述
    显示耗时统计出现问题

    二、问题排查

    开始和结束时间是否有误
    开始时间:

    2022-04-24 10:51:23.677632
    

    结束时间:

    2022-04-24 10:51:35.713161
    

    可见起止的时间获取没有问题

    计算方式

    round((end_time-start_time).microseconds/1000000, 2)
    

    计算结果0.04s

    接下来看看为什么这样的计算方式出错

    三、datetime

    datetime模块可以生成所需日期和时间的字符串,还可以进行时间差计算

    3.1 时间差计算

    import datetime
    datetime.datetime.now()
    # 生成一个datetime.datetime对象,包含了年、月、日、时、分、秒、毫秒七个参数
    # 可以直接获取年、月、日等数值:
    t = datetime.datetime.now()
    
    print(t.year, t.month, t.day, t.hour, t.minute, t.second, t.microsecond)
    print(type(t.year), type(t.month), type(t.day), type(t.hour), type(t.minute), type(t.second), type(t.microsecond))
    
    # output:
    2022 4 24 11 3 25 336771
    <class 'int'> <class 'int'> <class 'int'> <class 'int'> <class 'int'> <class 'int'> <class 'int'>
    

    3.2 时间和日期的获取

    # 可以分别获得日期,时间:
    print(t.date(), type(t.date()))
    print(t.time(), type(t.time()))
    # output:
    2022-04-24 <class 'datetime.date'>
    11:06:50.314211 <class 'datetime.time'>
    

    3.3 格式化输出字符串

    可以按照需要格式化输出字符串:datetime.datetime.strftime("format")

    指令意义示例
    %a当地工作日的缩写Sun, Mon, …, Sat
    %A当地工作日的全名Sunday, Monday, …, Saturday
    %w以十进制数显示的工作日,其中0表示星期日,6表示星期六0, 1, …, 6
    %d补零后,以十进制数显示的月份中的一天01, 02, …, 31
    %b当地月份的缩写an, Feb, …, Dec
    %B当地月份的全名January, February, …, December
    %m补零后,以十进制数显示的月份01, 02, …, 12
    %y补零后,以十进制数表示的,不带世纪的年份00, 01, …, 99
    %Y十进制数表示的带世纪的年份0001, 0002, …, 2013, 2014, …, 9998, 9999
    %HHour (24-hour clock)00, 01, …, 23
    %IHour (12-hour clock)01, 02, …, 12
    %M补零后,以十进制数显示的分钟00, 01, …, 59
    %S补零后,以十进制数显示的秒00, 01, …, 59
    %UWeek number of the year (Sunday as the first day of the week)00, 01, …, 53
    %WWeek number of the year (Monday as the first day of the week)00, 01, …, 53
    %c本地化的适当日期和时间表示Tue Aug 16 21:30:00 1988
    %x本地化的适当日期表示08/16/1988
    %X本地化的适当时间表示21:30:00
    %%字面的 ‘%’ 字符字面的 ‘%’ 字符

    格式可以用任意连接符组合成你想要的格式

    import datetime
    t = datetime.datetime.now()
    print(t.strftime("%Y%m%d"),type(t.strftime("%Y%m%d")))
    print(t.strftime("%Y-%m_%d:%H-%M:%S"))
    
    # output:
    20220424 <class 'str'>
    2022-04_24:11-16:36
    

    注意,此时返回的就是字符串

    datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
    

    通过datetime.timedelta类创建一个时间差,用来进行计算

    四、问题解决

    通过datetime的使用可以看到,(end_time-start_time).microseconds获取的是毫秒这个维度的值,而非所有的值

    import datetime
    # 2022-04-24 10:51:23.677632
    start_time = datetime.datetime(2022, 4, 24, 10, 51, 23, 677632)
    # 2022-04-24 10:51:35.713161
    end_time = datetime.datetime(2022, 4, 24, 10, 51, 35, 713161)
    
    
    print("days: ", (end_time-start_time).days)
    print("seconds: ", (end_time-start_time).seconds)
    print("microseconds: ", (end_time-start_time).microseconds)
    
    # output:
    days:  0
    seconds:  12
    microseconds:  35529
    

    如果想要获取秒级时间差,而且保留2位小数,可以

    (end_time-start_time).seconds + round((end_time-start_time).microseconds/1000000, 2)
    

    也可以使用total_seconds()方法

    round((end_time-start_time).total_seconds(), 2)
    

    问题解决

    五、秒数间隔

    datetime计算秒数间隔

    import datetime
    # 2022-04-24 10:51:23.677632
    start_time = datetime.datetime(2022, 4, 24, 10, 51, 23, 677632)
    # 2022-04-25 11:52:35.713161
    end_time = datetime.datetime(2022, 4, 25, 11, 52, 35, 713161)
    
    print("seconds: ", (end_time-start_time).seconds)
    
    # output:
    seconds:  3672
    

    这两个时间相差1d+,但是输出的结果中仅为3672s
    原因在于seconds只能计算同一天的间隔,所以事先要计算出差值的天数,用天数144060+秒数才能得到正确的结果
    对于这种情况一般使用total_seconds()来解决

    import datetime
    # 2022-04-24 10:51:23.677632
    start_time = datetime.datetime(2022, 4, 24, 10, 51, 23, 677632)
    # 2022-04-25 11:52:35.713161
    end_time = datetime.datetime(2022, 4, 25, 11, 52, 35, 713161)
    
    print((end_time-start_time).total_seconds())
    
    # output:
    total_seconds:  90072.035529
    
    展开全文
  • 【Unity3D日常开发】时间类Time和DateTime的使用

    千次阅读 多人点赞 2021-09-13 14:57:03
    凡是用到时间,日期的都免不了要用到时间类DateTime,那么DateTime类跟Time类又有啥区别呢。 DateTime类的函数以及属性怎么用呢。 这一篇文章就将这些知识拿捏的明明白白。 二、Time和DateTime的区别 首先,来看一下...
  • Python datetime函数常见用法总结

    千次阅读 2020-12-29 08:30:57
    Python datetime使用指导:操作时间、日期和时间区间在 Python 中处理日期和时间是一个很麻烦的问题。幸运的是,Python 提供了内置方法来简化这种操作:Python Datetime 模块。datetime 可以帮助我们识别并处理与...
  • import time import datetime #先获得时间数组格式的日期 threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 3)) #转换为时间戳: timeStamp = int(time.mktime(threeDayAgo.timetuple())) #转换...
  • datetime 模块提供了以简单和复杂的方式操作日期和时间的类。虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作。该模块还支持可感知时区的对象。本文主要介绍datetime库的date、time、...
  • odoo python datetime.date 转datetime.datetime

    千次阅读 2022-04-29 19:09:27
    raise exception.with_traceback(None) from new_cause TypeError: unsupported operand type(s) for -: 'datetime.date' and 'datetime.datetime' dateobject = datetime.date.today() datetime.dateti...
  • 本节内容前言相关术语的解释时间的表现形式time模块datetime模块时间格式码总结前言在开发工作中,我们经常需要用到日期与时间,如:作为日志信息的内容输出计算某个功能的执行时间用日期命名一个日志文件的名称记录...
  • Python datetime模块详解

    万次阅读 多人点赞 2020-01-14 14:22:59
    一、datetime模块介绍 (一)、datetime模块中包含如下类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间对象 datetime 日期时间对象,常用的属性有hour, minute, ...
  • [Python] datetime 库的使用

    千次阅读 2022-05-02 20:57:37
    参数:无 调用该函数,执行结果如下: from datetime import datetime today = datetime.utcnow() print(today) 2022-05-01 12:35:40.849860 3.datetime.now() 和 datetime utcnow() 都返回一个 datetime 类型的...
  • 本文介绍python时间模块 datetime (datetime、timedelta和timezone部分)的常用方法和属性
  • Python datetime详解

    千次阅读 2020-10-15 20:29:46
    datetime模块定义了5个类,分别是 datetime.date:表示日期的类,常用的属性有year, month, day datetime.datetime:表示日期时间的类,常用的属性有hour, minute, second, microsecond datetime.time:表示时间...
  • c# DateTime格式

    千次阅读 2020-11-22 16:45:15
    本文算是多年使用DateTime的一个总结,包括DateTime对象的整体应用,以及如何处理不同的区域、时区、格式等内容。 文章目录二、构造三、静态字段四、方法五、属性六、时间对象的加减及比较七、日期的格式化八、阴历 ...
  • python datetime date time calender 1、datetime 对日期和时间进行处理的主要对象: timedelt:两个日期或时间之间的间隔(常用) datetime:同时有时间和日期(常用) date:只关注日期 time:只关注时间 2、获取...
  • Python datetime 如何处理时区信息

    千次阅读 2021-01-14 22:55:56
    在 Python 常用日期处理 -- 内置模块 datetime 探讨了 Python 如何使用 datetime, 如果是一个跨时区的应用(Web 应用都是),就不能只存储一个时间而不带时区,如此,全球用户将会看到一个相同的时间字符串,白天黑夜...
  • C#基础——DateTime

    千次阅读 2020-04-07 19:12:25
    y 7 string yy = DateTime.Now.ToString("y-MM") yy="7-05" yy 07 string yy = DateTime.Now.ToString("yy-MM") yy="07-05" yyy或更多的y 1984 string yy = DateTime.Now.ToString("yyyy"); yy="...
  • python datetime与timestamp

    千次阅读 2021-01-01 19:01:07
    datetime是Python处理日期和时间的标准库。 获取当前日期和时间 我们先看如何获取当前日期和时间: >>> from datetime import datetime >>> now = datetime.now() # 获取当前datetime >>...
  • Python datetime 模块详解

    千次阅读 2021-08-09 14:31:56
    Python中常用于时间的模块有time、datetime 和 calendar,顾名思义 time 是表示时间(时、分、秒、毫秒)等,calendar 是表示日历时间的,本章先说 datetimedatetime 模块 序号
  • Python中datetime库的用法

    千次阅读 2020-12-07 11:13:14
    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.datetime模块定义了5个类,分别是1.datetime.date:表示日期的类2.datetime.datetime:表示日期时间的类3.datetime....
  • python datetime中strftime用法

    千次阅读 2021-05-25 19:16:20
    now=datetime.datetime.now() >>> now.strftime('%a') 'Sun' %A 输出完整的星期几名称英文 >>> import datetime >>> now=datetime.datetime.now() >>> now.s
  • C# .net DateTime.Now.ToString() 年月日时分秒格式化大全 //2021年4月24日 System.DateTime.Now.ToString("D"); //2021-4-24 System.DateTime.Now.ToString("d"); //2021年4月24日 16:30:15 System.DateTime.Now....
  • 也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好。 学习Dart语言,首先我们需要使用到一个...DateTime now = DateTime.now(); // 创建的时间对象为 2021年1月1日 DateTime y2k = DateTime(2021); .
  • 在 MySQL 中使用 DateTime

    千次阅读 2022-02-28 15:38:05
    默认情况下,DATETIME 值的范围从 1000-01-01 00:00:00 到 9999-12-31 23:59:59。它使用 5 个字节进行存储。 DATETIME 格式的语法: YYYY-MM-DD HH:MM:SS MySQL 日期和时间类型 MySQL 中有许多有用的...
  • C# DateTime.Now.ToString() 用法

    千次阅读 2022-02-24 14:57:47
    string dateTime1 = DateTime.Now.ToString("D"); Console.WriteLine(dateTime1);//2022年2月24日 string dateTime2 = DateTime.Now.ToString("d"); Console.WriteLine(dateTime2);//2022/2/24 string ...
  • import datetimeprint ((datetime.datetime.now()-datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M"))print ((datetime.datetime.now()-datetime.timedelta(minutes=1)).strftime("%Y-%m-%d %H:%M"))print (...
  • 关于datetime这个模块,可以说是平时不用的时候大家相安无事,一到用的时候,便会觉得有点混乱了,所以写下本篇文章,留待以后有需要使用,需要注意的是,文中的代码存在一些冗余,有一些代码片段可以替换为其他的...
  • ____tz_zs ...我们常使用的是 datetime 模块中的 datetime 类。 datetime 对象 datetime(year, month=None, day=None, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) 构造 datetim...
  • python 日期和时间处理(time,datetime模块讲解)

    万次阅读 多人点赞 2020-10-01 16:09:03
    datetime_object = datetime.datetime.now() print(datetime_object) 2.获取当前日期 import datetime date_object = datetime.date.today() print(date_object) 查看下datetime有什么 import

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 698,394
精华内容 279,357
关键字:

datetime

友情链接: chapter11.rar