首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >腌制后的日期时间戳更新了吗?

问腌制后的日期时间戳更新了吗?
EN

Stack Overflow用户
提问于 2016-07-15 12:16:32
回答 2查看 1.4K关注 0票数 1

我正在使用datetime.date.today().day创建时间戳。在代码的后面,将将此时间戳与另一个(当前)时间戳进行比较,但仅在日期级别上进行比较:“如果当前日期不是前时间戳的日期,则做一些事情”。

为此,我使用泡菜保存第一个时间戳。现在我想知道,如果加载日期不是“转储”日期,那么datetime对象是否会在pickle.load之后自动更新。毕竟,这个函数被命名为“今天”..。我希望,这不是一个愚蠢的问题,我设法正确地解释了我的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-15 12:27:22

方法datetime.datetime.today()创建当前时刻的新datetime.datetime对象。对象本身不知道是如何创建的,即既不知道函数,也不知道函数的意图。它只知道它是什么时候创建的,这就是将要存储的内容。

如果您查看该函数的文档(例如通过help(datetime.datetime.today),它提供如下内容:

当前日期或日期时间:与self.__class__.fromtimestamp(time.time())相同

现在,time.time()提供了当前的时间戳,例如1468585949.653488。这是一个普通数字(float或int),一旦创建,它就是常量。然后,这个数字被简单地输入到datetime.datetime.fromtimestamp。对于任何给定的时间戳,这都会给出相同的datetime 1。

代码语言:javascript
复制
In [12]: datetime.datetime.fromtimestamp(1468585949.653488)
Out[12]: datetime.datetime(2016, 7, 15, 14, 32, 29, 653487)

如果转储这个对象,就会得到一个常规的datetime.datetime对象。它只是普通类datetime.datetime及其数据,没有像datetime.datetime.today这样的函数或方法引用。

代码语言:javascript
复制
In [3]: print(pickle.dumps(datetime.datetime.fromtimestamp(1468585949.653488),protocol=0))
# cdatetime  # class datetime.\
# datetime   #                datetime
# p0         # push last object (datetime.datetime) to stack as p0
# (S'\x07\xe0\x07\x0f\x0e \x1d\t\xf8\xb0'  # group '(' start, string 'S' from binary ('\x07...')
# p1         # push last object (string) to stack as p1
# tp2        # create tuple from last stack group, push to stack as p2
# Rp3        # call p0(*p2)
# .          # done

那么,这些垃圾是做什么的?它将对象datetime.datetime查找为p0,将字符串'\x07\xe0\x07\x0f\x0e \x1d\t\xf8\xb0'存储为p1,创建元组p2 = tuple((p1,)),然后调用p0(*p2)。

或者换句话说,返回datetime.datetime('\x07\xe0\x07\x0f\x0e \x1d\t\xf8\xb0')。注意,datetime.datetime的参数是一个常量字符串。这将始终给您原始的日期时间:

代码语言:javascript
复制
In [30]: datetime.datetime('\x07\xe0\x07\x0f\x0e \x1d\t\xf8\xb0')
Out[30]: datetime.datetime(2016, 7, 15, 14, 32, 29, 653488)

1时区等方面的差异。

票数 3
EN

Stack Overflow用户

发布于 2016-07-15 12:40:11

装货后不会自动更新。要演示它,请查看这个小示例:

代码语言:javascript
复制
import pickle
import datetime

today1 = datetime.datetime.today()
pickle.dump(today1, open('today','wb') )   

sleep(5) 
today2 = pickle.load(open('today','r')) 

# today1 => datetime.datetime(2016, 7, 15, 18, 6, 6, 578041)
# today2 => datetime.datetime(2016, 7, 15, 18, 6, 6, 578041)

您可以看到,即使在延迟了5秒之后,属性(年、月、日、小时、秒)也没有变化。)日期时间对象:today1和today2

希望它有帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38395920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档