我正在使用datetime.date.today().day创建时间戳。在代码的后面,将将此时间戳与另一个(当前)时间戳进行比较,但仅在日期级别上进行比较:“如果当前日期不是前时间戳的日期,则做一些事情”。
为此,我使用泡菜保存第一个时间戳。现在我想知道,如果加载日期不是“转储”日期,那么datetime对象是否会在pickle.load之后自动更新。毕竟,这个函数被命名为“今天”..。我希望,这不是一个愚蠢的问题,我设法正确地解释了我的问题。
发布于 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。
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这样的函数或方法引用。
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的参数是一个常量字符串。这将始终给您原始的日期时间:
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时区等方面的差异。
发布于 2016-07-15 12:40:11
装货后不会自动更新。要演示它,请查看这个小示例:
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
希望它有帮助:)
https://stackoverflow.com/questions/38395920
复制相似问题