練手——用Python寫的時間戳轉換為北京時間的小工具


#北京時間需加上8小時
bj = 8*3600

def time_stamp(times):
    #一天總秒數
    nonDaySeconds = 24*3600
    leapmonths = [31,29,31,30,31,30,31,31,30,31,30,31]
    nonleapmonths = [31,28,31,30,31,30,31,31,30,31,30,31]
    #四年為一個周期,從1972年開始
    fourYearDays = (366+365+365+365)

    year = 0
    currentDays = 0
    sumDay = 0
    month = 0


    #計算自1970年以來經過的天數
    nDays = int(times/nonDaySeconds)
    #計算當天已經過了多少毫秒
    currentDaySeconds = times%nonDaySeconds

    #計算自1973年以來經過的多少個完整4年周期,並計算上一個閏年是哪一年
    lastLeapYear = int((nDays-(365+365+366))/fourYearDays)*4+(1970+2)
    #計算不足一個4年周期的天數
    lDays = (nDays-(365+365+366))%fourYearDays
    #print(lastLeapYear,lDays)
    #判斷當前屬於四年周期的哪一年,並計算當年已經走過的總天數
    if lDays < 365:
        year = 1
        currentDays = lDays
    elif lDays< (365+365):
        year = 2
        currentDays = lDays - 365
    elif lDays < (365+365+365):
        year = 3
        currentDays = lDays - 365 - 365
    elif lDays < (365+365+365+366):
        year = 4
        currentDays = lDays - 365 - 365 - 365
    currentYear = lastLeapYear + year
    #print(currentYear,currentDays)

    #計算幾月幾號
    if year == 4:
        #如果是閏年
        for i in range(len(leapmonths)):
            if sumDay <= currentDays:
                sumDay += leapmonths[i]
                month += 1
        day = (currentDays - sumDay + 1) + leapmonths[month-1]
    else:
        for i in range(len(nonleapmonths)):
            if sumDay <= currentDays:
                sumDay += nonleapmonths[i]
                month += 1
        day = (currentDays - sumDay + 1) + nonleapmonths[month-1]
    #print(month,day)


    #計算時分秒
    currentHour = int(currentDaySeconds/(60*60))
    currentMinute = int((currentDaySeconds%(60*60))/60)
    currentSeconds = (currentDaySeconds%(60*60))%60
    #print(currentHour,currentMinute,currentSeconds)
    print(str(currentYear)+' 年 '+judgetime(month)+' 月 '+judgetime(day)+' 日   '+
        judgetime(currentHour)+':'+judgetime(currentMinute)+':'+judgetime(currentSeconds))


def judgetime(value):
    if value < 10:
        return '0' + str(value)
    else:
        return str(value)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM