【问题标题】:Tornado datetime龙卷风日期时间
【发布时间】:2011-10-31 21:03:57
【问题描述】:

如何根据客户偏移量创建日期时间戳?我整天都在搞这个。这个想法是让用户登录并根据他们的时区创建 cookie,以便在这么长时间后过期。

#!/usr/bin/env python

import tornado.auth
import tornado.database
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.escape
import hashlib
import unicodedata
import markdown
import os.path
import re
import urllib
import sys
import time
import json
import MySQLdb
import Cookie
from tornado.options import define, options
import datetime
from nptime import nptime

define("port", default=8001, help="Server port", type=int)
class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r"/", MainHandler),
            (r"/test", Test),
        ]
        tornado.web.Application.__init__(self, handlers)

        self.db = tornado.database.Connection(
            host=options.mysql_host, database=options.mysql_database,
            user=options.mysql_user, password=options.mysql_password)

class BaseHandler(tornado.web.RequestHandler):
    @property
    def db(self):
        return self.application.db

class MainHandler(BaseHandler):
    def get(self):
        self.set_header("Content-Type", "text/html")
        self.write()
        self.finish()

class Test(BaseHandler):
    def post(self):
        tmz = self.get_argument('tmz', '')
        cur = datetime.datetime.utcnow().strftime('%A, %B %d, %Y %I:%M:%S %p 'tmz, gmtime())
        self.set_header("Content-Type", "text/html")
        self.write(cur)
        self.finish()

def main():
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(Application())
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()


if __name__ == "__main__":
    main()

tmz 是发送的时区,例如 -0400 或 +0500

【问题讨论】:

    标签: python datetime offset tornado


    【解决方案1】:

    您可以使用隐藏的日期时间输入将客户端的当前时间(包括时区)传递到登录表单中:

    <input type="hidden" name="current_datetime" />
    

    该输入的值可以用 javascript 填充。

    然后,在您的 post 函数中,您可以将小时或天添加到 current_datetime 传入的值。

    【讨论】:

    • 这是一种可能性,除非用户在页面上闲置了一段时间,即起身做某事然后回来,那么时间量将是短暂的。看起来这应该不难完成,因为当从服务器运行它作为脚本时它很好,它通过网络运行它似乎是问题,Tornado 似乎踢了一个 500 错误
    • 我最终找出了问题所在。出于某种原因,它需要放在int()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多