首页 文章

如何在Python中获取当前时间

提问于
浏览
2109

获取当前时间的模块/方法是什么?

30 回答

  • 117

    所有好的建议,但我发现自己最容易使用 ctime()

    In [2]: from time import ctime
    In [3]: ctime()
    Out[3]: 'Thu Oct 31 11:40:53 2013'
    

    这给出了当前本地时间的格式良好的字符串表示 .

  • 48

    使用Pandas来获取当前时间,有点过头了解手头的问题:

    import pandas as pd
    print (pd.datetime.now())
    print (pd.datetime.now().date())
    print (pd.datetime.now().year)
    print (pd.datetime.now().month)
    print (pd.datetime.now().day)
    print (pd.datetime.now().hour)
    print (pd.datetime.now().minute)
    print (pd.datetime.now().second)
    print (pd.datetime.now().microsecond)
    

    输出:

    2017-09-22 12:44:56.092642
    2017-09-22
    2017
    9
    22
    12
    44
    56
    92693
    
  • 401

    首先从datetime导入datetime模块

    from datetime import datetime
    

    然后将当前时间打印为'yyyy-mm-dd hh:mm:ss'

    print(str(datetime.now())
    

    为了得到'hh:mm:ss'形式的时间,其中ss代表完整的秒数加上经过的秒数,就这样做;

    print(str(datetime.now()[11:])
    

    将datetime.now()转换为字符串会产生一种答案,其格式与我们习惯的常规日期和时间一样 .

  • 232

    尝试http://crsmithdev.com/arrow/中的箭头模块:

    import arrow
    arrow.now()
    

    或者UTC版本:

    arrow.utcnow()
    

    要更改其输出,请添加.format():

    arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')
    

    对于特定时区:

    arrow.now('US/Pacific')
    

    一小时前:

    arrow.utcnow().replace(hours=-1)
    

    或者如果你想要要点 .

    arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
    >>> '2 years ago'
    
  • 36

    from time import time
    
    t = time()
    
    • t - 浮点数,适用于时间间隔测量 .

    Unix和Windows平台有一些区别 .

  • 424

    如果您需要当前时间作为 time 对象:

    >>> import datetime
    >>> now = datetime.datetime.now()
    >>> datetime.time(now.hour, now.minute, now.second)
    datetime.time(11, 23, 44)
    
  • 36

    您可以使用 time 模块 .

    import time
    print time.strftime("%d/%m/%Y")
    
    >>> 06/02/2015
    

    使用资本 Y 给出全年,使用 y 将给出 06/02/15 .

    您也可以使用更长的时间 .

    time.strftime("%a, %d %b %Y %H:%M:%S")
    >>> 'Fri, 06 Feb 2015 17:45:09'
    
  • 38
    import datetime
    date_time = str(datetime.datetime.now())
    date = date_time.split()[0]
    time = date_time.split()[1]
    

    日期将打印日期和时间将打印时间 .

  • 819
    >>> from time import gmtime, strftime
    >>> strftime("%a, %d %b %Y %X +0000", gmtime())
    'Tue, 06 Jan 2009 04:54:56 +0000'
    

    以指定的格式输出当前的GMT . 还有一个localtime()方法 .

    这个page有更多细节 .

  • 86

    这就是我最终的目的:

    >>>from time import strftime
    >>>strftime("%m/%d/%Y %H:%M")
    01/09/2015 13:11
    

    此外,此表是必要的参考,用于选择适当的格式代码,以便按照您希望的方式格式化日期(来自Python "datetime" documentation here) .

    strftime format code table

  • 17
    >>> import datetime, time
    >>> time = strftime("%H:%M:%S:%MS", time.localtime())
    >>> print time
    '00:20:58:20S'
    
  • 28

    以下是我用来获取时间而不必格式化的内容 . 有些人不喜欢split方法,但它在这里很有用:

    from time import ctime
    print ctime().split()[3]
    

    它将以HH:MM:SS格式打印 .

  • 4

    你可以使用time.strftime()

    >>> from time import gmtime, strftime
    >>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
    '2009-01-05 22:14:39'
    
  • 3

    最快的方法是

    >>> import time
    >>> time.strftime("%Y%m%d")
    '20130924'
    
  • 12

    如何在Python中获取当前时间?

    时间模块

    time 模块提供的函数告诉我们"seconds since the epoch"中的时间以及其他实用程序 .

    import time
    

    Unix纪元时间

    这是您应该获取用于保存数据库的时间戳的格式 . 它是一个简单的浮点数,可以转换为整数 . 它也适用于以秒为单位的算术运算,因为它表示自1970年1月1日00:00:00以来的秒数,并且它是相对于我们下一步要查看的其他时间表示的记忆灯:

    >>> time.time()
    1424233311.771502
    

    此时间戳不考虑闰秒,因此它不是线性的 - 忽略闰秒 . 因此虽然它不等同于国际UTC标准,但它很接近,因此对于大多数记录保存案例来说非常好 .

    然而,这对于人类调度来说并不理想 . 如果您希望在某个特定时间点发生未来事件,则需要将该时间存储为可以解析为日期时间对象或序列化日期时间对象的字符串(这些将在后面描述) .

    time.ctime

    您还可以按照操作系统首选的方式表示当前时间(这意味着它可以在您更改系统首选项时更改,因此不要依赖于此在所有系统中都是标准的,正如我见过其他人所期望的那样) . 这通常是用户友好的,但通常不会导致字符串按时间顺序排序:

    >>> time.ctime()
    'Tue Feb 17 23:21:56 2015'
    

    您可以使用 ctime 将时间戳水合成人类可读的形式:

    >>> time.ctime(1424233311.771502)
    'Tue Feb 17 23:21:51 2015'
    

    这种转换也不利于记录保存(除了只能由人类解析的文本 - 并且通过改进的光学字符识别和人工智能,我认为这些情况的数量将减少) .

    datetime模块

    datetime 模块在这里也很有用:

    >>> import datetime
    

    datetime.datetime.now

    datetime.now 是一个返回当前时间的类方法 . 它使用 time.localtime 而没有时区信息(如果没有给出,否则请参见下面的时区) . 它有一个表示(允许你重新创建一个等效的对象)在shell上回显,但是当打印(或强制转换为 str )时,它是人类可读(和接近ISO)格式,并且词典排序相当于按时间顺序排序:

    >>> datetime.datetime.now()
    datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
    >>> print(datetime.datetime.now())
    2015-02-17 23:43:51.782461
    

    datetime的utcnow

    您可以通过以下方式获取UTC时间的日期时间对象(全球标准):

    >>> datetime.datetime.utcnow()
    datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
    >>> print(datetime.datetime.utcnow())
    2015-02-18 04:53:31.783988
    

    UTC是一个几乎等同于GMT时区的时间标准 . (虽然GMT和UTC不会因夏令时而改变,但他们的用户可能会在暑假期间切换到其他时区,例如英国夏令时 . )

    datetime timezone aware

    但是,到目前为止我们创建的日期时间对象都不能轻易转换为各种时区 . 我们可以用 pytz 模块解决这个问题:

    >>> import pytz
    >>> then = datetime.datetime.now(pytz.utc)
    >>> then
    datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)
    

    同样地,在Python 3中,我们有 timezone 类,附加了一个utc timezone 实例,这也使得对象时区可以识别(但是转换到另一个时区而没有方便的 pytz 模块留给读者的练习):

    >>> datetime.datetime.now(datetime.timezone.utc)
    datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)
    

    我们看到我们可以轻松地从原始的utc对象转换为时区 .

    >>> print(then)
    2015-02-18 04:55:58.753949+00:00
    >>> print(then.astimezone(pytz.timezone('US/Eastern')))
    2015-02-17 23:55:58.753949-05:00
    

    您还可以使用 pytz timezone localize 方法识别天真的日期时间对象,或者替换tzinfo属性(使用 replace ,这是盲目完成的),但这些是最后的度假胜地而不是最佳做法:

    >>> pytz.utc.localize(datetime.datetime.utcnow())
    datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
    >>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
    datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)
    

    pytz 模块允许我们识别 datetime 对象时区,并将时间转换为 pytz 模块中可用的数百个时区 .

    人们可以表面上将此对象序列化为UTC时间并将其存储在数据库中,但它需要更多的内存并且比仅仅存储Unix Epoch时间更容易出错,我首先证明了这一点 .

    其他观看方式时间更容易出错,特别是在处理可能来自不同时区的数据时 . 您希望不存在关于字符串或序列化日期时间对象所针对的时区的混淆 .

    如果您正在为用户显示Python的时间, ctime 可以很好地工作,而不是在表格中(它通常不能很好地排序),但可能在时钟中 . 但是,我个人建议,在Python处理时间时,要么使用Unix时间,要么使用时区感知UTC datetime 对象 .

  • 2

    如果您只想要以ms为单位的当前时间戳(例如,测量执行时间),您还可以使用“timeit”模块:

    import timeit
    start_time = timeit.default_timer()
    do_stuff_you_want_to_measure()
    end_time = timeit.default_timer()
    print("Elapsed time: {}".format(end_time - start_time))
    
  • 11

    默认情况下, now() 函数以 YYYY-MM-DD HH:MM:SS:MS 格式返回输出 . 使用以下示例脚本在Python脚本中获取当前日期和时间,并在屏幕上打印结果 . 使用以下内容创建文件 getDateTime1.py .

    import datetime
    
    currentDT = datetime.datetime.now()
    print (str(currentDT))
    

    输出如下所示:

    2018-03-01 17:03:46.759624
    
  • 29

    这个问题不仅仅是为了它而需要一个新的答案......然而,一个闪亮的新玩具/模块是足够的理由 . 这就是Pendulum library,它似乎做了箭头尝试的那种事情,除了没有固有的缺陷和错误箭头 .

    例如,原始问题的答案:

    >>> import pendulum
    >>> print(pendulum.now())
    2018-08-14T05:29:28.315802+10:00
    >>> print(pendulum.utcnow())
    2018-08-13T19:29:35.051023+00:00
    

    需要担心的是许多需要解决的标准,包括多个RFC和ISO . 曾经混淆了他们;不用担心,请稍微研究一下 dir(pendulum.constants) 然而,那里有比RFC和ISO格式更多的东西 .

    当我们说当地时,虽然我们的意思是什么?我的意思是:

    >>> print(pendulum.now().timezone_name)
    Australia/Melbourne
    >>>
    

    据推测,其他大多数人都是指其他地方 .

    就这样吧 . 长话短说:Pendulum试图为日期和时间做什么请求对HTTP . 值得考虑,特别是它的易用性和广泛的文档 .

  • 13

    datetime.now() 将当前时间作为一个天真的日期时间对象返回,该对象表示本地时区的时间 . 例如,在DST转换期间("fall back"),该值可能是不明确的 . 为避免歧义,应使用UTC时区:

    from datetime import datetime
    
    utc_time = datetime.utcnow()
    print(utc_time) # -> 2014-12-22 22:48:59.916417
    

    或者附加了相应时区信息的时区感知对象(Python 3.2):

    from datetime import datetime, timezone
    
    now = datetime.now(timezone.utc).astimezone()
    print(now) # -> 2014-12-23 01:49:25.837541+03:00
    
  • 12
    import datetime
    date_time = datetime.datetime.now()
    
    date = date_time.date()  # Gives the date
    time = date_time.time()  # Gives the time
    
    print date.year, date.month, date.day
    print time.hour, time.minute, time.second, time.microsecond
    

    dir(date) 或包括包的任何变量 . 您可以获得与变量关联的所有属性和方法 .

  • 12

    如果你已经使用NumPy,那么你可以直接使用numpy.datetime64()函数 .

    import numpy as np
    str(np.datetime64('now'))
    

    仅限日期:

    str(np.datetime64('today'))
    

    或者,如果您已经使用Pandas,那么您可以使用pandas.to_datetime()函数:

    import pandas as pd
    str(pd.to_datetime('now'))
    

    要么:

    str(pd.to_datetime('today'))
    
  • 10
    from time import ctime
    
    // Day {Mon,Tue,..}
    print ctime().split()[0]
    // Month {Jan, Feb,..}
    print ctime().split()[1]
    // Date {1,2,..}
    print ctime().split()[2]
    // HH:MM:SS
    print ctime().split()[3]
    // Year {2018,..}
    print ctime().split()[4]
    

    当您调用ctime()时,它会将秒转换为字符串,格式为'Day Month Date HH:MM:SS Year'(例如:'Wed January 17 16:53:22 2018'),然后调用split()方法将从你的字符串中创建一个列表['Wed','Jan','17','16:56:45','2018'](默认的分隔符是空格) .

    括号用于在列表中“选择”想要的参数 .

    一个人应该只调用一个代码行 . 一个人不应该像我一样打电话给他们,这只是一个例子,因为在某些情况下你会得到不同的 Value 观,罕见但不是不可能的情况 .

  • 10

    Harley's answer类似,但使用 str() 函数可以实现快速,简洁,易读的格式:

    >>> from datetime import datetime
    >>> str(datetime.now())
    '2011-05-03 17:45:35.177000'
    
  • 9
    >>> from datetime import datetime
    >>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    

    对于此示例,输出将如下所示: '2013-09-18 11:16:32'

    这是strftime的列表 .

  • 6

    使用:

    >>> import datetime
    >>> datetime.datetime.now()
    datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
    
    >>> print(datetime.datetime.now())
    2018-07-29 09:17:13.812189
    

    而且只是时间:

    >>> datetime.datetime.now().time()
    datetime.time(15, 8, 24, 78915)
    
    >>> print(datetime.datetime.now().time())
    09:17:51.914526
    

    有关更多信息,请参见the documentation .

    要保存键入,可以从 datetime 模块导入 datetime 对象:

    >>> from datetime import datetime
    

    然后从上述所有内容中删除前导 datetime. .

  • 5

    为什么不问美国海军的官方计时器U.S. Naval Observatory

    import requests
    from lxml import html
    
    page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
    tree = html.fromstring(page.content)
    print(tree.xpath('//html//body//h3//pre/text()')[1])
    

    如果你住在D.C.地区(像我一样),延迟可能不会太糟糕......

  • 3

    简单易行:

    使用 datetime 模块,

    import datetime
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    

    输出:

    2017-10-17 23:48:55
    

    OR

    使用 time

    import time
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
    

    输出:

    2017-10-17 18:22:26
    
  • 2

    .isoformat() 在文档中,但还没有在这里(这与@Ray Vega的答案相似):

    >>> import datetime
    >>> datetime.datetime.now().isoformat()
    '2013-06-24T20:35:55.982000'
    
  • 2197

    您可以使用此功能来获取时间(不幸的是它不说AM或PM):

    def gettime():
            from datetime import datetime
            return ((str(datetime.now())).split(' ')[1]).split('.')[0]
    

    要获得稍后合并的小时,分钟,秒和毫秒,您可以使用以下功能:

    小时:

    def gethour():
            from datetime import datetime
            return return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]
    

    分钟:

    def getminute():
            from datetime import datetime
            return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]
    

    第二:

    def getsecond():
            from datetime import datetime
            return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]
    

    毫秒:

    def getmillisecond():
            from datetime import datetime
            return return (str(datetime.now())).split('.')[1]
    
  • 4

    我想用毫秒来得到时间 . 获得它们的简单方法:

    import time, datetime
    
    print(datetime.datetime.now().time())                         # 11:20:08.272239
    
    # Or in a more complicated way
    print(datetime.datetime.now().time().isoformat())             # 11:20:08.272239
    print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239
    
    # But do not use this:
    print(time.strftime("%H:%M:%S.%f", time.localtime()), str)    # 11:20:08.%f
    

    但我想 only milliseconds ,对吗?获得它们的最短途径:

    import time
    
    time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
    # 11:34:23.751
    

    在最后一次乘法中添加或删除零以调整小数点数,或者只是:

    def get_time_str(decimal_points=3):
        return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
    

相关问题