Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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
处理android和django时使用什么日期格式?_Android_Python_Django_Date Formatting - Fatal编程技术网

处理android和django时使用什么日期格式?

处理android和django时使用什么日期格式?,android,python,django,date-formatting,Android,Python,Django,Date Formatting,ISO 8601? 例如,django很适合这种格式: ValidationError at /locations/new_tracks/1351320785 ["'1351320785' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 还是一次性的? 有一个时区对我来说很重要。 询问,因为我没有处理用两种不同框架编写的服务器-客户机系统的经验。Django几乎总是

ISO 8601? 例如,django很适合这种格式:

ValidationError at /locations/new_tracks/1351320785
["'1351320785' value has an invalid format. It must be in YYYY-MM-DD  HH:MM[:ss[.uuuuuu]][TZ] format."]
还是一次性的? 有一个时区对我来说很重要。
询问,因为我没有处理用两种不同框架编写的服务器-客户机系统的经验。

Django几乎总是在内部使用适用于基础数据库的日期/时间类型的数据库字段以UTC时间存储日期。您不能直接访问它-在读取/写入数据库时,它将转换为Python“datetime”对象或从该对象转换为Python“datetime”对象,详细描述了这一点。使用and可以直接在Unix时间(特别是POSIX时间,它是用UTC指定的)和UTC时间中的Python日期时间之间进行转换。可以使用在Python日期时间和ISO 8601之间进行转换


如果需要支持本地时区日期/时间,即使只是一个本地时区,也应启用时区支持,如中所述。这将增加复杂性,但正如文档所指出的,“这将保护您免受夏令时(DST)转换过程中出现的微妙和不可复制的错误的影响。”

错误消息明确指出您应该使用什么格式:

它必须是YYYY-MM-DD HH:MM[:ss[.UUUUU]][TZ]格式

如果您只有一个Unix时间,则将其转换为UTC时间(由
datetime
对象表示),并使用以下命令对其进行序列化:

如果您的android客户端不理解rfc 3339,请尝试以下变体:

>>> datetime.utcfromtimestamp(1351320785).isoformat(' ') + '+00:00'
'2012-10-27 06:53:05+00:00'
>>> datetime.utcfromtimestamp(1351320785).isoformat(' ') + '+0000'
'2012-10-27 06:53:05+0000'

.

Unix时间不是UTC时间。它不在任何时区。不过,您可以在POSIX上轻松地将“从纪元算起的秒数”转换为UTC时间(
UTC_time=datetime(1970,1,1)+timedelta(seconds=timestamp)
)。POSIX.1-2008纪元时间是以UTC为单位的,不包括闰秒,这就是我在Unix时代所指的时间,虽然有些系统可能使用稍有不同的语义。您是否理解“始终是UTC”和“转换..轻松”之间的区别?不能将某些有效的UTC时间表示为“epoch time”,这一事实明确地暗示了“is”在这里是不合适的。很抱歉,我误解了您的意思-我以为您的意思是Unix时间是一个幼稚的时间戳(其解释由上下文而不是标准化的时间戳决定)。当然,Unix时间并不是字面上的UTC,只是用UTC来指定。我稍微编辑了答案以澄清。如果使用“正确”时区,则Unix时间不以UTC为单位指定(在这种情况下,它使用TAI时间刻度(1970-01-01 00:00:10 TAI历元,您可以明确地转换为/转换为任何过去的UTC时间(未来(+6m)时间戳的关系未知))。您可以这样做。一般来说(C标准),“time()函数返回实现与当前日历时间的最佳近似值。”(即,它不限于UTC、TAI或任何其他时间刻度、时区)。我不理解您为什么要将
ValidationError
作为“django适合此格式”的证据。(这表明代码不理解格式的情况正好相反)我给了他unixtime,他拒绝了,说它必须是YYYY-MM-DD HH:MM[:ss[.uuuuuuu][TZ]格式。“]也就是8601
>>> datetime.utcfromtimestamp(1351320785).isoformat(' ') + '+00:00'
'2012-10-27 06:53:05+00:00'
>>> datetime.utcfromtimestamp(1351320785).isoformat(' ') + '+0000'
'2012-10-27 06:53:05+0000'