如何获取当前时间?

问:

如何获取当前时间?

答1:

huntsbot.com – 高效赚钱,自由工作

使用 datetime:

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(now)
2009-01-06 15:08:24.789150

对于没有日期的时钟时间:

>>> now.time()
datetime.time(15, 8, 24, 78915)
>>> print(now.time())
15:08:24.789150

为了节省输入,您可以从 datetime 模块导入 datetime 对象:

>>> from datetime import datetime

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

如果这个答案涵盖时区(例如 UTC)并且可能以 time.time() 开头,那就太好了。

@Toskan 格式不是问题的一部分,因此它不应该成为答案的一部分。已经提供了一个链接,指向该模块的更多文档,其中包含格式等内容。

哪个版本的 Python 是给出的原始答案?只需在我的 Python 2.7 交互式控制台(IronPython 尚未更新)中输入 datetime.datetime.now() 即可获得与答案中使用 print() 的较新示例相同的行为。我没有成功复制原始答案显示的内容(datetime.datetime(2009, 1, 6, 15, 8, 24, 78915))。 (不是我真的想要, print() 行为是首选,但我很好奇。)

@BobVicktor:Python 2.7、3.7 和 3.8 对我来说都是相同的行为,不确定你看到了什么。

@HarleyHolcombe 嗯......也许是 IronPython 的东西?当我自己键入 datetime.now() 时,它会打印出与您的答案显示 print(datetime.now()) 相同的内容...

答2:

huntsbot.com – 高效赚钱,自由工作

使用 time.strftime():

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

这比@ParaMeterz 下面的答案更好/更差吗?为什么我们应该使用 time 模块而不是 datetime 模块?

它不会返回我计算机的当前时间。

这是 UTC 时间,不同于 datetime 模块

@Saeed:使用函数 localtime() 而不是 gmtime() 来获取您的当地时间。

@frank 请参阅 datetime 与 time 上的 related question。

答3:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

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

示例输出:‘2013-09-18 11:16:32’

请参阅 strftime directives 列表。

答4:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

与 Harley’s answer 类似,但使用 str() 函数来获得一种快速且易读、更易于阅读的格式:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

不相干; “str”步骤不在问题范围内

@pppery 操作员也没有说这与获取时间字符串无关。 op 根本没有说他们想用时间做什么,那么为什么展示如何将它变成一个字符串是一件坏事呢?大部分答案都在谈论从时间获取一个字符串,所以它似乎是一个常见的用例,那么为什么要挑出 Ray 的答案呢?只是在不知道如何处理的情况下获得时间有什么用?您可以打印它,或对其进行数学运算,只有几个答案显示如何对其进行数学运算,因此我认为打印/获取字符串是一种常见用途。 ;-)(我知道这是我来的目的。)

这个答案有超过 440 个赞成票的事实表明,字符串方法的少量添加对很多人很有用。

440 人正在寻找不是问题实际答案的内容这一事实并不能使该内容成为问题的答案。

@pppery事实上,这是回答问题的另一种方式,这使得它与其他有类似问题的人相关。所以这没有什么问题:)

答5:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

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

时间模块

time 模块提供了以“自纪元以来的秒数”为单位告诉我们时间的函数以及其他实用程序。

import time

Unix 纪元时间

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

>>> time.time()
1424233311.771502

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

然而,这对于人工调度来说并不理想。如果您有一个希望在某个时间点发生的未来事件,您需要将该时间与可以解析为 datetime 对象或序列化 datetime 对象的字符串一起存储(这些将是后述)。

时间.ctime

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

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

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

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

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

日期时间模块

datetime 模块在这里也非常有用:

>>> import datetime

日期时间.日期时间.现在

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

日期时间的 utcnow

您可以通过执行以下操作以 UTC 时间(全球标准)获取 datetime 对象:

>>> 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 不会因夏令时而改变,但他们的用户可能会在夏季切换到其他时区,例如英国夏令时。)

日期时间时区感知

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

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

等效地,在 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,这是盲目地完成)使天真的 datetime 对象知道,但这些是最后的手段而不是最佳实践:

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

pytz 模块允许我们让 datetime 对象了解时区,并将时间转换为 pytz 模块中可用的数百个时区。

表面上可以将此对象序列化为 UTC 时间并将其存储在数据库中,但与我首先演示的简单存储 Unix 纪元时间相比,它需要更多的内存并且更容易出错。

查看时间的其他方式更容易出错,尤其是在处理可能来自不同时区的数据时。您不希望对字符串或序列化的日期时间对象用于哪个时区产生混淆。

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

我想每个人都同意 ctime 必须是格式化日期时间的最奇怪的方式。星期几和月份的缩写,月份的日期,24 小时制 h:m:s,然后是四位数的年份。喜欢对日期字符串进行排序的书呆子、美国人、欧洲人……每个人——是的,每个人——都可以在这种格式中找到至少两件令人恼火的事情。虽然我会使用它,因为它超级简单。

正如我上面关于 ctime 所说:“您还可以以操作系统首选的方式表示当前时间(这意味着当您更改系统首选项时它可能会改变,所以不要依赖它作为所有标准系统,正如我看到其他人所期望的那样)。这通常是用户友好的,但通常不会导致可以按时间顺序排序的字符串:“

答6:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

from time import time

t = time()

t - 浮点数,适用于时间间隔测量。

Unix 和 Windows 平台存在一些差异。

我在 Windows 10 家庭版上的结果是 1576095264.2682993 - 对于 Windows,这可能只是以秒为单位给出时间。

答7:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

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

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

此 page 有更多详细信息。

答8:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

前面的答案都是很好的建议,但我发现使用 ctime() 最简单:

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

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

OP问的是如何获取时间,而不是如何显示它!

答9:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

最快的方法是:

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

答10:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

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

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

答11:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

您可以使用 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'

原文链接:https://www.huntsbot.com/qa/laDE/how-do-i-get-the-current-time?lang=zh_CN&from=csdn

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值