在python中以特定格式获取日期

在python中以特定格式获取日期,python,date,Python,Date,我必须在python中获得从今天开始大约一个月前的日期。 结果字符串的格式应为yyyy/mm/dd 日期必须是近似的,因此可以避免考虑闰年之类的事情(或者也可以合并easy) 我已经为上述问题编写了以下代码 from datetime import date tup=list(date.today().timetuple()[0:3]) if (tup[1]==1): tup[1]=12 tup[0]-=1 else: tup[1]-=1 if tup[1]==2:

我必须在python中获得从今天开始大约一个月前的日期。 结果字符串的格式应为
yyyy/mm/dd

日期必须是近似的,因此可以避免考虑闰年之类的事情(或者也可以合并easy)

我已经为上述问题编写了以下代码

from datetime import date
tup=list(date.today().timetuple()[0:3])
if (tup[1]==1):
    tup[1]=12
    tup[0]-=1
else:
   tup[1]-=1
   if tup[1]==2:
      tup[2]=min(28,tup[2])
   else if tup[1] in [4,6,9,11]:
      tup[2]=min(30,tup[2])
print '/'.join([str(x) for x in tup])

有没有更优雅的方法来解决上述问题???

您可以将
datetime
类与
timedelta
函数结合使用

>>> (now + relativedelta(months=-1)).strftime('%Y/%m/%d')
'2014/06/29'
i、 e

然后,要格式化:

from datetime import datetime
dt = datetime.strftime(d, "%Y/%m/%d")
>>> print dt
2014/06/29

您可以将
datetime
类与
timedelta
函数结合使用

>>> (now + relativedelta(months=-1)).strftime('%Y/%m/%d')
'2014/06/29'
i、 e

然后,要格式化:

from datetime import datetime
dt = datetime.strftime(d, "%Y/%m/%d")
>>> print dt
2014/06/29

只是一个使用第三方软件包的替代解决方案,名为:


只是一个使用第三方软件包的替代解决方案,名为:

您也可以使用DateUtil的函数来实现此功能。与alecxe的库一样,它可以适当地处理一个月中的几天和闰年

如果没有DateUtil库,请首先安装该库

pip install python-dateutil
然后你可以这样利用它:

>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> now = datetime.datetime.today()
>>> now + relativedelta(months=1)
datetime.datetime(2014, 8, 29, 0, 32, 51, 843000)
>>> now + relativedelta(months=-1)
datetime.datetime(2014, 6, 29, 0, 32, 51, 843000)
最后,要格式化它,您需要使用函数

>>> (now + relativedelta(months=-1)).strftime('%Y/%m/%d')
'2014/06/29'
您也可以使用DateUtil的函数来实现此功能。与alecxe的库一样,它可以适当地处理一个月中的几天和闰年

如果没有DateUtil库,请首先安装该库

pip install python-dateutil
然后你可以这样利用它:

>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> now = datetime.datetime.today()
>>> now + relativedelta(months=1)
datetime.datetime(2014, 8, 29, 0, 32, 51, 843000)
>>> now + relativedelta(months=-1)
datetime.datetime(2014, 6, 29, 0, 32, 51, 843000)
最后,要格式化它,您需要使用函数

>>> (now + relativedelta(months=-1)).strftime('%Y/%m/%d')
'2014/06/29'

datetime是此处的正确模块

import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")

希望这有帮助。

这里的datetime是正确的模块

import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")

希望这有帮助。

在服务器上使用第三方软件包会增加额外开销吗?在服务器上使用第三方软件包会增加额外开销吗?