python 如何将字符串转化为datetime.date【获取指定日期的上月和两个日期之间相差的月数】

本文介绍如何使用Python进行日期操作,包括获取指定日期的上个月及计算两个日期间相差的月数。通过具体代码示例展示了如何利用datetime模块完成这些任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



$ python
Python 2.7.3 (default, Jan  2 201316:53:07
[GCC 4.7.2] on linux2
Type "help""copyright""credits" or "license" for more information.
>>> import datetime
>>> dtstr = '2014-02-14 21:32:12'
>>> datetime.datetime.strptime(dtstr, "%Y-%m-%d %H:%M:%S").date()
datetime.date(2014214)
>>>

'''
获取指定日期的上个月
日期字符串和日期格式
'''
def getLastMonth(dtstr,dateformat):
	d=datetime.strptime(dtstr, dateformat).date()
	year = d.year
	month = d.month
	if month == 1 :#如果是本年1月的
		month = 12
		year -= 1
	else :#如果是大于1月的
		month -= 1
	return (datetime(year,month,1)).strftime(dateformat)

'''
两个日期之间相差的月数
包括开始日期和结束日期的当天
日期字符串和日期格式
'''	
def diffMonth(startDate,endDate,dateformat):
	start=datetime.strptime(startDate, dateformat).date()
	end=datetime.strptime(endDate, dateformat).date()

	startYear=start.year
	startMonth=start.month

	endYear=end.year
	endMonth=end.month

	#如果是同年
	if startYear==endYear:
		diffmonths=endMonth-startMonth
	#如果是上年
	elif endYear-startYear==1:
		diffmonths=12+endMonth-startMonth
	#如果是大于1年
	elif endYear-startYear>1:
		years=endYear-startYear
		diffmonths=(years-1)*12+12+endMonth-startMonth
	#如果开始日期大约结束日期报错
	elif endYear-startYear<0 or( endYear==startYear and endMonth-startMonth):
		print 'enddate must greater than startdate'

	return int(diffmonths+1)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值