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



$ python
Python  2.7 . 3  (default, Jan   2  2013 16 : 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( 2014 2 14 )
>>>

'''
获取指定日期的上个月
日期字符串和日期格式
'''
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)


  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值