Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将strtime转换为';X小时前';_Python_Timestamp_Strptime - Fatal编程技术网

Python 将strtime转换为';X小时前';

Python 将strtime转换为';X小时前';,python,timestamp,strptime,Python,Timestamp,Strptime,我在strtime中有一个日期,我想显示为“X小时前”。我可以很高兴地将小时转换为天和周等,但我不知道如何进行初始计算。下面是我如何将字符串转换为strtime: time.strptime(obj.created_at, '%a %b %d %H:%M:%S +0000 %Y') p、 这是我完全错了吗?看来,在Django中,它可以帮助您解决问题,而无需您进行转换。timesince的源代码是可用的。似乎在Django中可以帮助您,而无需转换。timesince的源代码可用。可以改用dat

我在strtime中有一个日期,我想显示为“X小时前”。我可以很高兴地将小时转换为天和周等,但我不知道如何进行初始计算。下面是我如何将字符串转换为strtime:

time.strptime(obj.created_at, '%a %b %d %H:%M:%S +0000 %Y')

p、 这是我完全错了吗?

看来,在Django中,它可以帮助您解决问题,而无需您进行转换。
timesince
的源代码是可用的。

似乎在Django中可以帮助您,而无需转换。
timesince
的源代码可用。

可以改用datetime吗?(或者把你所有的转换成datetime?)


你能改用datetime吗?(或者把你所有的转换成datetime?)


datetime
模块显然更易于使用,但是,如果您坚持,您可以使用
time
模块。即:

>>> import time
>>> fmt = '%a %b %d %H:%M:%S +0000 %Y'
>>> time.strftime(fmt)
'Thu Oct 15 07:54:07 +0000 2009'
>>> createdat = 'Thu Oct 15 02:30:30 +0000 2009'
>>> createdtim = time.strptime(createdat, fmt)
>>> hoursago = (time.time() - time.mktime(createdtim)) / 3600
>>> print hoursago
5.42057559947
time
模块使用起来如此麻烦的一个原因是它使用了两种不同的方式来表示时间——一种是9元组(这是从
strtime
中得到的),另一种是浮点“从纪元开始的秒数”(这就是你需要做的);
mktime
函数将前者转换为后者。小时差显然是秒差的1/3600——当然,您必须决定如何显示典型的分数“小时数”(小时和分数加上一些数字,或者四舍五入到最接近的整数小时数,或者其他)


格式中的文字“+0000”用于
strtime
,表示您希望并忽略“createdat”字符串中该位置的文字字符(通常在该位置有一个时区偏移说明符)。如果这确实是您想要的,那么您就有了正确的格式字符串

日期时间
datetime
模块肯定更容易使用,但是如果您坚持,您可以使用时间
time
模块。即:

>>> import time
>>> fmt = '%a %b %d %H:%M:%S +0000 %Y'
>>> time.strftime(fmt)
'Thu Oct 15 07:54:07 +0000 2009'
>>> createdat = 'Thu Oct 15 02:30:30 +0000 2009'
>>> createdtim = time.strptime(createdat, fmt)
>>> hoursago = (time.time() - time.mktime(createdtim)) / 3600
>>> print hoursago
5.42057559947
time
模块使用起来如此麻烦的一个原因是它使用了两种不同的方式来表示时间——一种是9元组(这是从
strtime
中得到的),另一种是浮点“从纪元开始的秒数”(这就是你需要做的);
mktime
函数将前者转换为后者。小时差显然是秒差的1/3600——当然,您必须决定如何显示典型的分数“小时数”(小时和分数加上一些数字,或者四舍五入到最接近的整数小时数,或者其他)


格式中的文字“+0000”用于
strtime
,表示您希望并忽略“createdat”字符串中该位置的文字字符(通常在该位置有一个时区偏移说明符)。如果这确实是您想要的,那么您就有了正确的格式字符串

这肯定是最常见的问题之一。我希望你能指出一个例子,在这种情况下,它已经得到了回答。我想提示是,你可以搜索(在页面顶部)以前类似的问题,并查看他们的答案。得到提示,接受了这个暗示,没有发现任何适合我的问题,也没有发现任何简单到足以让我理解的东西,等。有几十个。这一定是最常见的问题之一。我希望能指出一个例子,在这种情况下,它已经得到了回答。我想提示是,你可以搜索(在页面顶部)以前类似的问题,并看到他们的答案。得到提示,接受了这个提示,没有发现任何适合我的问题,也没有发现任何简单到足以让我理解的东西。重复:,,等等。有几十个。定义如下:不幸的是,我使用的是zope而不是django,我在zope中寻找类似的东西,但似乎找不到。定义如下:不幸的是,我用的是zope而不是django,我在zope中找过类似的东西,但似乎找不到。我想我需要阅读一下datetime,对于新手来说,这有点让人想入非非,我不能从示例中借用DateTime使日期/时间更易于管理,我很少发现自己在使用时间。代码只是从现在的时间中减去当时创建的时间,因此我们有delta.seconds,然后将delta.seconds除以secs/min和min/hour改为hours。我想我需要仔细阅读datetime,对于新手来说,这有点让人想入非非,我不能从示例中借用datetime使日期/时间更易于管理,我很少使用时间。代码只是从现在的时间中减去当时创建的时间,这样我们就有了delta.seconds,然后将delta.seconds除以secs/min和min/hour改为小时。