Java Android Python MySQL日期时间解析
我需要在android客户端、python服务器和mysql服务器之间传递日期时间 它应在以下方面发挥作用:Java Android Python MySQL日期时间解析,java,android,python,mysql,datetime,Java,Android,Python,Mysql,Datetime,我需要在android客户端、python服务器和mysql服务器之间传递日期时间 它应在以下方面发挥作用: android客户端将确切的时间从客户端发送到cherrypy python服务器(我想datetime对象应该作为字符串发送?) 服务器必须将这个字符串解析成一些有用的东西,作为datetime对象使用 现在有两种情况: datetime对象应该写入mysql数据库(相关数据库表中有一个datetime类型的属性) 服务器应该从mysql数据库中检索datetime,并将其与解析的
- android客户端将确切的时间从客户端发送到cherrypy python服务器(我想datetime对象应该作为字符串发送?)
- 服务器必须将这个字符串解析成一些有用的东西,作为datetime对象使用
有人知道解决这些问题的好方法吗?传输日期时间值的最佳格式是;它们的格式为
YYYY-mm-ddTHH:mm:SS+tz:tz
,其中T
是可选的
Python的datetime.datetime
类可以用一个简单的额外模块解析这些内容(请参阅)。输出和输出一样简单
MySQL的DATETIME列类型仅处理UTC值,但默认情况下接受ISO 8601 DATETIME字符串(使用空格而不是T
),因此您必须将DATETIME对象强制转换为UTC(上述iso8601模块的示例):
我也会将时区偏移量插入数据库;只需使用从datetime
对象检索它,然后使用iso8601.iso8601.parse_timezone()
函数从MySQL加载时再次解析它
# insertion:
cursor.execute('INSERT INTO dates VALUES(?, ?)', utciso8601, dt.tzname())
# querying
for row in query:
timezone = iso8601.iso8601.parse_timezone(row[1])
utcdt = iso8601.parse_date(row[0])
dt = utcdt.astimezone(timezone)
我不知道Android在处理日期和时间方面有多好,但它肯定可以处理ISO 8601格式。是否会涉及时区?是的。该应用程序旨在支持多种语言,从而支持不同的时区。感谢您的回答。要在android应用程序中使用datetime对象,您必须使用java.util包中的类(也就是说,您可以在android应用程序中使用java SDK中的所有内容)。现在,我通过GregorianCalendar对象获得了实际的日期时间。
# insertion:
cursor.execute('INSERT INTO dates VALUES(?, ?)', utciso8601, dt.tzname())
# querying
for row in query:
timezone = iso8601.iso8601.parse_timezone(row[1])
utcdt = iso8601.parse_date(row[0])
dt = utcdt.astimezone(timezone)