【问题标题】:Remove timestamp from date string in Python从 Python 中的日期字符串中删除时间戳
【发布时间】:2017-04-10 06:53:12
【问题描述】:

我有一种情况,我应该忽略日期字符串中的时间戳。我尝试了以下命令,但没有运气。

"start" variable used below is in AbsTime (Ex: 01MAY2017 11:45) and not a string.

start_date = datetime.datetime.strptime(start, '%d%^b%Y').date()
print start_date

我的输出应该是:

01MAY2017 或 01MAY2017 00:00

谁能帮帮我。

【问题讨论】:

  • start.split()[0] 会给你第一个输出
  • 好奇:你从哪里得到%^b的想法?
  • @MartijnPieters 可能是错字。 %^ 位于常规键盘上的 56(移位)。
  • @AshishNitinPatil:啊,是的,这是一个合理的解释。
  • 我想要大写月份,这就是我使用 %^b 的原因。

标签: python datetime


【解决方案1】:

你的指令有点偏离,你需要捕获所有的内容(不管你想保留什么)。

start_date = datetime.datetime.strptime(start, '%d%b%Y %H:%M').date()
print start_date.strftime('%d%b%Y')
# '01May2017'

更新 - 在下面添加完整代码:

import datetime
start = '01MAY2017 11:45'
start_date = datetime.datetime.strptime(start, '%d%b%Y %H:%M').date()
print start_date.strftime('%d%b%Y')
# 01May2017

【讨论】:

  • 我也试过了,但出现以下错误:AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
  • 试试import datetime而不是from datetime import datetime
  • 使用最新答案中的代码。您可能在解释器中导入了两次datetime
  • "TypeError: strptime() 参数 1 必须是字符串,而不是 AbsTime"
  • @srisriv:请使用正确的minimal reproducible example 更新您的问题,然后包含有关您的实际对象的更多详细信息。如果您没有使用str 值(您的问题暗示了这一点),那么您的工作就是告诉我们您拥有什么。
【解决方案2】:

https://docs.python.org/2/library/datetime.html

要将字符串转换回日期时间,我们可以使用 strptime()

使用 strptime() 的示例

datetime.datetime.strptime('10Apr2017 00:00', '%d%b%Y %H:%M')

In [17]: datetime.datetime.strptime('10Apr2017 00:00', '%d%b%Y %H:%M')
Out[17]: datetime.datetime(2017, 4, 10, 0, 0)

使用 strftime 形成您的日期时间对象

使用 now() 的示例将我们形成的日期时间对象返回为字符串

datetime.datetime.now().strftime('%d%b%Y')

In [14]: datetime.datetime.now().strftime('%d%b%Y')
Out[14]: '10Apr2017'

【讨论】:

  • OP 只想保留这一天。
  • ...而不是当天。
  • 这只是一个例子。重要部分 strftime
  • 这也是不正确的。它会给ValueError: unconverted data remains: 11:45
  • 我的错,您使用的是now() 而不是 OP 的格式,所以这可以工作。
【解决方案3】:

试试这个

  import datetime 
  start = '01MAY2017 11:45' 
  start_date = datetime.datetime.strptime(start, '%d%b%Y %H:%M')
  print start_date.strftime('%Y-%m-%d')

【讨论】:

    【解决方案4】:

    如果您不想使用字符串并使用 datetime 对象本身,那么实际上我最好的选择是使用相同的 datetime 对象来减去 hours 。

    这是一个例子:

    In [1]: date.strftime('%c')
    Out[2]: 'Wed Jul 10 00:00:00 2019'
    
    In [3]: date = datetime.datetime.utcnow()
    
    In [4]: date.strftime('%c')
    Out[5]: 'Wed Jul 10 19:06:22 2019'
    
    In [6]: date = date - datetime.timedelta(hours = date.hour, minutes = date.minute, seconds = date.second) #Removing hours, mins,secs
    
    In [7]: date.strftime('%c') #use 
    Out[8]: 'Wed Jul 10 00:00:00 2019'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-29
      • 2019-01-28
      • 2016-08-31
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多