是否有可能在python中比较当天+月(不是年)与当天+月?

时间:2014-05-16 20:33:43

标签: python

我的格式为' 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)并进行比较。但不确定是否有更好的方法?

2 个答案:

答案 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);
            });
        }
    }