python - 将自由文本用户回复转换为日期时间
问题描述
我试图找出一种巧妙的方法来获取用户的输入并将其存储在数据库中以便以后检索。
就上下文而言,这是一个 Discord 机器人,我试图在其中跟踪用户的日程安排。这个想法是用户可以说“&addtime 12/30/1 12pm CST”,机器人会记录他们将在 12/30/1/ 12pm CST 在线
我想跟踪时区的原因是我可以将所有时区转换为特定时区,这样时区就不会混淆。
因此,在有人在上面添加他们的时间之后,如果我(某人 PST)去检索人们何时在线,我可以输入“&schedules PST”并获取指定时区的所有时间。
我现在面临的问题是我可以在网上找到的所有日期时间示例都需要非常准确和具体的输入。我正在寻找一个更灵活的函数,它足够聪明,可以计算出日期时间。
解决方案
用这个方法想通了。它只支持美国时区,但这足以满足我的需求:
from dateutil import parser
from dateutil import tz
import pytz
def parse_date(self, msg):
ET = tz.gettz('US/Eastern')
CT = tz.gettz('US/Central')
MT = tz.gettz('US/Mountain')
PT = tz.gettz('US/Pacific')
us_tzinfos = {'CST': CT, 'CDT': CT,
'EST': ET, 'EDT': ET,
'MST': MT, 'MDT': MT,
'PST': PT, 'PDT': PT}
usertime = parser.parse(msg, tzinfos=us_tzinfos)
servertime = usertime.astimezone(pytz.timezone("America/Phoenix"))
parse_date("12/30/20 12pm EST")
推荐阅读
- python - Pandas 读取包含 nan 和 null 作为字符串的文件
- php - 如何将字符串转换为 json,并在 PHP 中获取所有键的值
- python-3.x - 如何向网站发出请求并下载搜索数据
- python - 表达式中的 Python 函数 - 推迟评估
- ios - 如何在 SwiftUI 的 NavigationView 中放置徽标?
- docker - 使用 Grafana docker 映像忽略 custom.ini
- reactjs - 导入使用 React-Router-Dom 的自定义模块组件时出现问题
- git - Git 无法使用 LF 在 Linux 上签出使用 CRLF 存储的文件
- angular - 在 onSubmit 中等待有效性检查的最佳方法是什么
- python - 如何通过链接到我需要的信息