改变字符格式 (python)

2024-09-29 17:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把字符串'datetime.datetime(2018, 4, 15, 12, 59)'改成'2018-04-15T12:59'格式。你知道吗

我创建了一个如下的函数:

def changeDateFormat(date):
    newDate = []
    for i in date.split('datetime')[2].split(','):
        newDate.append(re.sub('[() ]', '', i))
    newStr = newDate[0] + '-0' + newDate[1] + '-' + newDate[2] + 'T' + newDate[3] + ':' + newDate[4]
    return newStr

而且很有效。你知道吗

但是,我也希望它能够处理这样的情况:如果每个单元小于10,我希望添加一个'0'。现在它只是添加了一个'0'不管。你知道吗

我可以用一种效率很低的方法来做,但我想知道我怎么能用一种聪明的方法来做。你知道吗


Tags: 方法函数字符串inrefordatetimedate
3条回答

我不明白为什么要使用datetime对象的字符串表示,但是eval是您的朋友:

>>> import datetime
>>> eval('datetime.datetime(2018, 4, 15, 12, 59)').isoformat()
'2018-04-15T12:59:00'

eval文档:https://docs.python.org/3/library/functions.html#eval

我假设您正试图避免使用datetime对象,因为在其他情况下,它显然很混乱。你知道吗

I can do it in a very inefficient way

你其实不远,就一行。你知道吗

def changeDateFormat(date):
    newDate = []
    for i in date.split('datetime')[2].split(','):
        newDate.append(re.sub('[() ]', '', i))

    pad = '-0' if newDate[1] < 10 else '-'
    newStr = newDate[0] + pad + newDate[1] + '-' + newDate[2] + 'T' + newDate[3] + ':' + newDate[4]
    return newStr

如果不使用datetime对象,恐怕没有更聪明的方法了。你知道吗

你知道吗日期时间.strftimeeval在这里会很完美。你知道吗

import datetime
# use eval to execute the string like a a command
dt = eval('datetime.datetime(2018, 4, 15, 12, 59)')

formatted_date = dt.strftime('%Y-%m-%dT%H:%M')

output: '2018-04-15T12:59'

引用:strftime() and strptime() Behavior

相关问题 更多 >

    热门问题