我的格式为' 5月10日'而我正在试图弄清楚今年或明年的情况。日期仅为一年,因此5月10日将是2015年5月10日,而5月20日将是2014年5月20日。
要做到这一点,我想将字符串转换为日期格式并进行比较,但没有一年我得到此错误: ValueError:未转换的数据仍然存在:
这里对我目前的做法大致了解:
if datetime.strptime(DATE_TO_COMPARE, '%b %d') > time.strftime("%d %m"): #need to figure out may 11 is for this year or next year. Year is not provided.
print datetime.strptime(DATE_TO_COMPARE, '%b %d'), ' > ', time.strftime("%d %m")
有更好的方法吗?现在,我正在考虑制作一个月的字典,然后将月份转换为数字,然后在当天添加它(即Dec5 = 512)并进行比较。但不确定是否有更好的方法?
答案 0 :(得分:1)
解析,然后替换结果中的年份(使用date.replace()
并在今天进行测试,不字符串:
from datetime import date, datetime
today = date.today()
parsed = datetime.strptime(DATE_TO_COMPARE, '%b %d').date().replace(year=today.year)
if parsed > today:
# last year
parsed = parsed.replace(year=today.year - 1)
我在这里使用了date
个对象,因为在比较中不应该计算出时间。
演示:
>>> from datetime import date, datetime
>>> today = date.today()
>>> DATE_TO_COMPARE = 'May 10'
>>> parsed = datetime.strptime(DATE_TO_COMPARE, '%b %d').date().replace(year=today.year)
>>> parsed
datetime.date(2014, 5, 10)
>>> parsed > today
False
>>> DATE_TO_COMPARE = 'May 20'
>>> parsed = datetime.strptime(DATE_TO_COMPARE, '%b %d').date().replace(year=today.year)
>>> parsed
datetime.date(2014, 5, 20)
>>> parsed > today
True
答案 1 :(得分:1)
export class YourComponent implements OnInit {
constructor(protected scheduleService: ScheduleService){}
ngOnInit(): void {
this.scheduleService.getSchedules().subscribe(result => {
console.log(result);
});
}
}