【问题标题】:What format is this datetime?这个日期时间是什么格式?
【发布时间】:2019-12-03 06:43:00
【问题描述】:

我相信这是由某种 Java 日期库生成的某种格式。 我正在尝试使用 Python 解析它,但我不确定这是否可以通过 datetime 来完成。如果这不可能,我将修剪字符串并保留第一部分进行转换。但也许有人知道格式:

25-SEP-2019 11:26:23 AMERICA/LOS_ANGELES

我认为是这样的:

'%v %H:%M:%S %V'
 or
'%d-%b-%Y %H:%M:%S %Z'

但我绝对不知道如何解析 AMERICA/LOS_ANGELES 位。

编辑:删除表达“java date”,因为人们似乎不明白这是一个比喻性的演讲。

【问题讨论】:

  • 仅供参考,没有“Java 日期”之类的东西。
  • 作为Solvalou commented,最后一部分是Continent/Region格式的正确时区名称。切勿使用您在媒体中看到的 2-4 个伪区域,例如 PSTISTCST。它们不是真正的时区,没有标准化,甚至不是唯一的。但是,该区域名称的大小写是错误的。应该是America/Los_Angeles 而不是全大写。该特定区域被北美西海岸的大部分地区(尽管不是全部)使用。
  • 您的日期时间字符串没有任何 Java 特定的内容,作为一名 20 年的 Java 程序员,我以前从未见过这种格式。它可能是由 Java 程序生成的,也可能不是。
  • 谢谢@OleV.V。这就是我需要知道的。我相信这与某些 Oracle 产品有关。

标签: python datetime strftime


【解决方案1】:

您的日期时间字符串与 Java 无关。作为一名 20 年的 Java 程序员,我以前从未见过这种格式。它可能是由 Java 程序生成的,也可能不是。

对不起,我不能告诉你如何在 Python 中处理它(我可以告诉你如何在 Java 中生成和解析它,但这不是你问的)。

【讨论】:

  • 谢谢,我需要一个更了解 Java 的人来证实我的怀疑。 @solvalou 和 Basil Bourque 也很重要。谢谢
【解决方案2】:

首先,您需要将日期时间与时区分开,然后通过适当的格式对其进行解析。

inp = "25-SEP-2019 11:26:23 AMERICA/LOS_ANGELES"
date_str = re.split(r'\s(?=[A-Z]+)', inp)[0].title()
date = datetime.strptime(date_str, "%d-%b-%Y %H:%M:%S")

【讨论】:

  • 是的,这正是我的问题要求不要做的......另外,你甚至没有解析时区。
【解决方案3】:

在 python3 中,没有任何时区的指令,如 AMERICA/LOS_ANGELES。 用于检查特定时区的当地时间。

from datetime import datetime
import pytz

tz = pytz.timezone('AMERICA/LOS_ANGELES')
la_date = datetime.now(tz).strftime('%d-%b-%Y %H:%M:%S')
# it will print the LA time:  `02-Dec-2019 22:49:38`

如果你能剥离和分割字符串就更好了。

date_str = '25-SEP-2019 11:26:23 AMERICA/LOS_ANGELES '
date_time_timezone = date_str.strip().split() 
# ['25-SEP-2019', '11:26:23', 'AMERICA/LOS_ANGELES']

【讨论】:

  • 是的,这正是我的问题要求不要做的......另外,不解析时区。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
相关资源
最近更新 更多