python--有关时间--datetime,timedelta,以及字符串与时间转换,时间加减

切割字符串使用split(),默认空格切割,加入参数,按参数切割
string.split()[0] #空格切割,取空格左侧的字符串
string.split()[1] #空格切割,取空格右侧的字符串
string.split('上班')[0] #按“上班”二字切割字符串,取“上班”二字左侧的字符串
string.split('下班')[1] #按“上班”二字切割字符串,取“上班”二字右侧的字符串
#把datetime转成字符串
def datetime_toString(dt):
    return dt.strftime("%Y-%m-%d-%H")

#把字符串转成datetime
def string_toDatetime(string):
    return datetime.strptime(string, "%Y-%m-%d-%H")

#把字符串转成时间戳形式
def string_toTimestamp(strTime):
    return time.mktime(string_toDatetime(strTime).timetuple())

#把时间戳转成字符串形式
def timestamp_toString(stamp):
    return time.strftime("%Y-%m-%d-%H", tiem.localtime(stamp))

#把datetime类型转外时间戳形式
def datetime_toTimestamp(dateTim):
    return time.mktime(dateTim.timetuple())

年-月-日-时:%Y-%m-%d-%H

时分秒:%H:%M:%S

字符串比较大小:

a = '2017-10-18 22:17:46'
b = '2017-10-19 22:17:40'
print a > b
# 结果False

python中字符串的大小比较,是按照字符顺序,从前往后依次比较字符的ASCII数值,例如‘abc’要小于‘abd’。因此,时间字符串也可以直接比大小。

datetime类型的时间格式可以进行加减操作,加减之后得到的是一个timedelta对象

python--有关时间--datetime,timedelta,以及字符串与时间转换,时间加减_第1张图片

可以使用timedelta.seconds去做比较,切记这里时切换成秒来比较,下面是我写的一个计算加班费的python文件,仅供学习python知识,以及自己温习:

#描述:计算加班费
#作者:Rookie
#时间:2019-03-26

import time
import unittest
from datetime import datetime,timedelta

days = 21
f = open('3_month.txt','r',encoding='UTF-8')
line = f.readline()
line=line.strip('\n')
sum1 = 0
sum2 = 0
sum3 = 0
sum = 0
time3 = 0
while line:
    if ' ' in line:
        type = line.split()[1]
        # print(type)
        time1 = (line.split('上班')[1]).split('下班')[0]
        time1 = datetime.strptime(time1, '%H:%M:%S')
        time2 = (line.split('下班')[1]).split()[0]
        time2 = datetime.strptime(time2, '%H:%M:%S')
        if type == '正常':
            time3 += (time2 - datetime.strptime('17:30:00', '%H:%M:%S')).seconds
            # print(time3)
            if time2 > datetime.strptime('20:00:00', '%H:%M:%S'):
                sum1 += 10;
                #print(sum1)
        else:
            time3 += (time2-time1).seconds
            # print(time3)
            if (time2-time1).seconds > (4*3600):#两个datetime对象 相减后 得到的是一个timedelta对象,而timedelta对象当然是不能与 int 对象来比较大小的
                sum2 +=10;
                #print(sum2)
    line = f.readline()
    line = line.strip('\n')
#print(time3/3600)
if time3 > (days*2*3600):
    sum3 += (((time3 - days * 2 * 3600) / 3600) * 6)
    sum = sum1 + sum2 + sum3
    print(sum1)
    print(sum2)
    print(sum3)
    print(sum)
else:
    sum = sum1+sum2
    print(sum)


	


 

你可能感兴趣的:(测试开发)