我想将python中的日期序列化为URL安全字符串。
我记得C++中,我只使用代表1月1日1970以来的秒数的整数(或类似的东西)。然后我可以将其转换为Base64 url安全字符串。C++日期被设计成能够容易地绕过这些整数。理想情况下,在Python中,我希望得到一个表示日期的字节数组,然后将其传递给base64.urlsafe_b64encode()。然后,当我想反序列化时,我可以对字节进行反编码并将其传递回datetime对象。不过,我不知道如何在Python中实现这一点。
我相信我可以使用datetime.isoformat(),但它生成的字符串似乎不必要地长,我不需要让人可读。我也可以编写自定义函数来进行翻译,但如果可能的话,我想使用正式的库代码。
我遗漏了什么吗?有没有一种“简单”的方法可以做到我看不到的?
谢谢!
编辑:
好吧,这就是我决定的。它是@bgporter在下面建议的一种变体。我的目标是将日期时间信息转换为url安全字符串,而不占用太多不必要的空间,因此我修改了代码,使来自“int”时间戳的字节直接被base64 url编码,而不是转换为数字字符串(不需要base64 url编码)。生成的时间戳大约有8个字符,如下所示:a7NaTw==
:
编码时间戳(url安全Base64字符串):
url_safe_timestamp = base64.urlsafe_b64encode(struct.pack('L', int(time.time())))
解码时间戳(日期对象):
decoded_timestamp = datetime.datetime.fromtimestamp(float(struct.unpack('L', base64.urlsafe_b64decode(url_safe_timestamp))[0]))
目前没有回答
相关问题 更多 >
编程相关推荐