如何从datetime.datetime对象中提取小时和分钟?

121

我需要从created_at属性返回的datetime.datetime对象中提取当天时间。但是,我该如何做呢?

这是我获取datetime.datetime对象的代码。

from datetime import *
import tweepy

consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
tweets = tweepy.Cursor(api.home_timeline).items(limit = 2)
t1 = datetime.strptime('Wed Jun 01 12:53:42 +0000 2011', '%a %b %d %H:%M:%S +0000 %Y')
for tweet in tweets:
   print (tweet.created_at - t1)
   t1 = tweet.created_at

我需要从t1中仅提取小时和分钟。

5个回答

153

我不知道您希望如何格式化它,但您可以这样做:

print("Created at %s:%s" % (t1.hour, t1.minute))

例如。


1
需要解释一下。它应该做什么?它是如何工作的?它使用Python的哪些特性?你能提供文档链接吗? - Peter Mortensen

56
如果时间是11:03,那么afrendeiro的回答会打印11:3。 您可以在分钟前补零:
"Created at {:d}:{:02d}".format(tdate.hour, tdate.minute)

或者另一种方法是使用tdate.time()并仅获取小时/分钟部分:

str(tdate.time())[0:5]

39
import datetime
    
YEAR        = datetime.date.today().year     # the current year
MONTH       = datetime.date.today().month    # the current month
DATE        = datetime.date.today().day      # the current day
HOUR        = datetime.datetime.now().hour   # the current hour
MINUTE      = datetime.datetime.now().minute # the current minute
SECONDS     = datetime.datetime.now().second #the current second
    
print(YEAR, MONTH, DATE, HOUR, MINUTE, SECONDS)
2021 3 11 19 20 57

需要解释一下。 - Peter Mortensen

25

由于Tweepy同时获取了时间戳,因此在这些事情上使用时间戳更容易:

import datetime
print(datetime.datetime.fromtimestamp(int(t1)).strftime('%H:%M'))

11

datetime包含hourminute字段。因此,要获取小时和分钟,您需要使用t1.hourt1.minute

然而,当您减去两个datetimes时,结果是一个timedelta对象,它只有daysseconds字段。因此,您需要根据需要进行除法和乘法运算以获得所需的数字。


关于“仅包含天数和秒数字段”的问题:文档中指出:“只有天数、秒数和微秒数被内部存储”(还有微秒)。这是为什么呢?由于原帖作者似乎已经离开,也许有人可以解答一下? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接