栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

计算两个日期之间的间隔--不使用包

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算两个日期之间的间隔--不使用包

目录

1、python实现

2、shell实现


程序均采用天数+1,日期进位思路 1、python实现
ac_date = "20200225"
nx_date = "20200303"

ac_year = int(ac_date[:4])
ac_month = int(ac_date[4:6])
ac_day = int(ac_date[6:8])

print(ac_date)
while int(ac_date) < int(nx_date):
    ac_day += 1
    lunarYear=False
    isMonthEnd = False
    if (ac_year % 4 == 0 and ac_year % 100 != 0) or ac_year %400 ==0:
        lunarYear = True
    if ac_day == 29 and ac_month == 2 and not lunarYear:
        isMonthEnd = True
    if ac_day == 30 and ac_month == 2 and lunarYear:
        isMonthEnd = True
    if ac_day == 31 and ac_month in [2,4,6,9,11]:
        isMonthEnd = True
    if ac_day == 32 and ac_month in [1,3,5,7,8,10,12]:
        isMonthEnd = True
    if isMonthEnd:
        ac_day = 1
        ac_month += 1
        if ac_month == 13:
            ac_month = 1
            ac_year += 1
    ac_date = str(ac_year)
    ac_date += str(ac_month)if ac_month > 10 else "0"+str(ac_month)
    ac_date += str(ac_day)if ac_day > 10 else "0"+str(ac_day)
    if ac_date < nx_date:
        print(ac_date)

2、shell实现
date1=20200225
date2=20200303
y1=`echo $date1 | cut -c 1-4`
m1=`echo $date1 | cut -c 5-6`
d1=`echo $date1 | cut -c 7-8`
echo $date1
while [ $date1 -lt $date2 ]
do
    d1=`expr $d1 + 1`
    lunarYear=0
    isMonthEnd=0
    y_1=`expr $y1 % 4`
    y_2=`expr $y1 % 100`
    y_3=`expr $y1 % 400`
    if [ $y_1 -eq 0 ] && [ $y_2 -ne 0 ] || [ $y_3 -eq 0 ];then
        lunarYear=1
    fi
    if [ $d1 -eq 29 ] && [ $m1 -eq 2 ] && [ $lunarYear -ne 1 ];then
        isMonthEnd=1
    fi
    if [ $d1 -eq 30 ] && [ $m1 -eq 2 ] && [ $lunarYear -eq 1 ];then
        isMonthEnd=1
    fi
    if [ $d1 -eq 31 ];then
        case $m1 in
            04|06|09|11)
            isMonthEnd=1
            ;;
        esac
    fi
    if [ $d1 -eq 32 ];then
        case $m1 in
            01|03|05|07|08|10|12)
            isMonthEnd=1
            ;;
        esac
    fi
    if [ $isMonthEnd -eq 1 ];then
        d1=1
        m1=`expr $m1 + 1`
        if [ $m1 -eq 13 ];then
            m1=1
            y1=`expr $y1 + 1`
        fi
    fi
    date1=`printf "%d%02d%02dn" $y1 $m1 $d1`
    if [ $date1 -lt $date2 ];then
        echo $date1
    fi
done

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号