Java 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客户端、python服务器和mysql服务器之间传递日期时间

它应在以下方面发挥作用:

  • android客户端将确切的时间从客户端发送到cherrypy python服务器(我想datetime对象应该作为字符串发送?)
  • 服务器必须将这个字符串解析成一些有用的东西,作为datetime对象使用
现在有两种情况:

  • datetime对象应该写入mysql数据库(相关数据库表中有一个datetime类型的属性)
  • 服务器应该从mysql数据库中检索datetime,并将其与解析的datetime对象进行比较
  • 在一些后台进程使用python datetime对象作为输入参数完成工作后,应该将一个新的datetime对象传递回android客户端


    有人知道解决这些问题的好方法吗?

    传输日期时间值的最佳格式是;它们的格式为
    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)