龙卷风 日期时间

0 投票
1 回答
1359 浏览
提问于 2025-04-17 05:22

我该如何根据客户的时区来创建一个日期时间戳呢?我今天一直在琢磨这个问题。我的想法是让用户登录,然后根据他们的时区来创建一个cookie,这个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。

1 个回答

0

你可以在登录表单中添加一个隐藏的日期时间输入框,这样就能把用户当前的时间(包括时区)传递进去:

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

这个输入框的值可以用JavaScript来填充。

然后,在你的提交功能中,你可以在当前时间的基础上加上几个小时或几天。

撰写回答