python如何处理时间字符串?

xixihaha
  • 23
def salary_cal(OT_date):
    year = int(time.strftime('%Y',time.strptime(OT_date.day ,'%d.%m.%Y'))   )
    mon = int(time.strftime('%m',time.strptime(OT_date.day ,'%d.%m.%Y'))   )
    day = int(time.strftime('%d',time.strptime(OT_date.day ,'%d.%m.%Y'))   )
    global over_time_salary
    if is_workday(datetime.date(year,mon,day)):
        over_time_salary+= salary_before_tax/22/8*(float(OT_date.time))*1.5
    else:
        over_time_salary+= salary_before_tax/22/8*(float(OT_date.time))*2    

如上代码想要实现的是一个加班费计算,平时1.5倍,其他日子2倍。
这是一个爬虫程序的一个函数,因为爬出来的数据格式就是11.03.2020这样的格式。
所以我先把时间格式化一下,然后再按格式提取出来,这样的风格我感觉比较有“面向对象”的感觉,但是套了两层显得繁琐。

直接提取年月日也可以,就直接day=int(list[0:1])即可,但是我总觉得这样做是C语言的风格,过程处理了。。

所以这里问大家两个问题:
1.如果爬虫爬到11.03.2020这样的时间字符串,我这样处理手段是否低级?
2.我这代码写的怎么样啊?我的思路完全是按着C来的,是不是有点落后?

回复
阅读 181
2 个回答

我觉得个人用户写python,第一能用,第二以后要改能看得懂,就行了。其他的就随缘了。

from datetime import datetime

def salary_cal(OT_date):
    d = datetime.strptime(OT_date.day ,'%d.%m.%Y')
    # day,month,year=OT_date.split('.')
    # d = datetime(year,month,day)
    global over_time_salary
    base = salary_before_tax/22/8*(float(OT_date.time))
    if is_workday(d): # d.isoweekday() in [...]
        over_time_salary+= base*1.5
    else:
        over_time_salary+= base*2

直接strptime转成时间类型不就可以了么,为什么要还要把年月日拆出来再装回去?

你知道吗?

宣传栏