【问题标题】:convert a date to a %Y:%j:%H:%M:%s in python with date command使用 date 命令在 python 中将日期转换为 %Y:%j:%H:%M:%s
【发布时间】:2014-07-30 02:05:40
【问题描述】:

我正在尝试使用以下调用在 python 2.6.6 中使用 os.popen 和 date 命令转换一系列日期:

    t=wp.time
    dtme=os.popen("date -d t +%Y:%j:%H:%M:%S")
    dtime=dtme.read()

其中 wp.time 是一系列日期,格式如下:

2014-07-22 19:59:53

date 命令的问题是它似乎无法读取日期和 yyyy-mm-dd 之间的空格。有解决办法吗?当我这样做时,我在 python 中做错了什么?有一个更好的方法吗?我的 datetime.strptime 似乎不起作用。

【问题讨论】:

  • 如果有帮助,我认为问题在于它不喜欢空间。它抱怨额外的操作数。如果有办法在更多步骤中做到这一点,我也愿意。
  • 我的 datetime.strptime 似乎不起作用。 是什么意思?上面的代码不包括对datetime.strptime的调用。
  • os.popen 似乎已被弃用
  • 我的意思是我试过了,它会抛出一个错误。我使用的是 python 2.6.6,自该版本以来已弃用。什么都可以替换

标签: python date datetime


【解决方案1】:

%j 看起来不适合读取您想要的日期格式,即一年中的日期格式。

我认为对于strptime或strftime,你想要

"%Y-%m-%d %H:%M:%s"

作为您的格式字符串,例如 2014-07-22 19:59:53

Linux 日期命令也是

回显date +"%Y-%m-%d %H-%M-%S"

或者,如果我误解了你,你想将 转换为 一年中的日期格式,这段代码 sn-p 会做到:

import datetime

t = "2014-07-22 19:59:53"
thedatetime= datetime.datetime.strptime(t,'%Y-%m-%d %H:%M:%S')
my_new_t =datetime.datetime.strftime(thedatetime,"%Y:%j %H:%M:%S")
print 'my_new_t',my_new_t

输出是

my_new_t 2014:203 19:59:53

如果你想要输出中的分号,不要空格

my_new_t =datetime.datetime.strftime(thedatetime,"%Y:%j:%H:%M:%S")

【讨论】:

  • os.popen 是做什么的?我有点困惑,如果你已经有了日期字符串,为什么要使用 os.popen 来转换它们?
  • 当我在您的第三个灰色框中运行 datetime.datetime.strptime 命令时。我正在尝试将日期转换为 yyyy/mm/dd 到一年中的某一天。并将 H:M:S 附加到它上面。所以我希望 2014-07-22 19:59:53 是 2014:203:19:59:53。有没有更好的方法?
  • 我现在正在成功运行此代码(第三个框),如果您 import datetime 并调用 datetime.datetime,它会产生您想要的输出(第四个框) .strptime(有两个日期时间)。 @Mark 使用不同但也是有效的导入语法 from datetime import datetime 所以他调用 datetime.strptime (一个日期时间)
  • 我知道,但你的 t 是一个字符串,而我的不是。我可以以某种方式将其转换为字符串吗?
  • 啊,好的。你说你的 t=wp.time。那是什么类型的?我以为这是一个格式为 2014-07-22 19:59:53 的字符串
【解决方案2】:

只需使用datetime.strptime。它没有被弃用,并且有效:

>>> from datetime import datetime
>>> t='2014-07-22 19:59:53'
>>> datetime.strptime(t,'%Y-%m-%d %H:%M:%S')
datetime.datetime(2014, 7, 22, 19, 59, 53)

注意有一个datetimeclass和一个datetimemodule。这可能是您报告的错误的原因:

>>> import datetime
>>> datetime.strptime
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'strptime'
>>> datetime.datetime.strptime
<built-in method strptime of type object at 0x1E200528>

【讨论】:

    【解决方案3】:

    查看subprocess 库。它包含有关如何替换 os.popen() 调用的具体建议

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-20
      • 2017-11-02
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2020-05-09
      相关资源
      最近更新 更多