91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python非標準時間的轉換方法

發布時間:2022-03-29 17:20:02 來源:億速云 閱讀:181 作者:iii 欄目:移動開發

這篇“python非標準時間的轉換方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python非標準時間的轉換方法”文章吧。

可匹配結構:

今天~前天, 幾天前, 分鐘秒前等 | 2017-1-4 12:10 | 2017/1/4 12:10 | 2018年4月2日 12:12 | 2018年4月2日 | 2017-1-4 | 2017/1/4 | 1/4 |

# -*- coding:utf-8 -*-
from datetime import datetime, timedelta
import re
import time


def tz_offset(tz):
    res = (re.search(r"(?P<F>[-+])(?P<H>d{2}):?(?P<M>d{2})", tz) or re.search("", "")).groupdict()
    offset = (1 if res.get("F", "+")=="+" else -1) * timedelta(
                        hours   = int(res.get("H", 0)),
                        minutes = int(res.get("M", 0)))
    return offset


def parse_date(data, fmt, tz):
    """
        時間匹配模塊,可轉化為固定格式
        返回時間字符串 0000-00-00 00:00:00
        可匹配結構 |今天~前天, 幾天前,分鐘秒前等 | 2017-1-4 12:10 | 2017/1/4 12:10 | 2018年4月2日 12:12
                        | 2018年4月2日 | 2017-1-4 | 2017/1/4 | 1/4 |
    """
    offset = tz_offset(tz)
    if fmt == "auto":
        now = (datetime.utcnow() + timedelta(hours=8)).replace(microsecond=0) + offset
        now_1 = now - timedelta(days=1)
        now_2 = now - timedelta(days=2)

        # 幾/剛/今天/昨天/前天
        x = data.strip()
        x = x.replace(u"幾", " 0 ")
        x = x.replace(u"剛[剛才]", now.strftime(" %Y-%m-%d %H:%M:%S "))
        x = x.replace(u"今天", now.strftime(" %Y-%m-%d "))
        x = x.replace(u"昨天", now_1.strftime(" %Y-%m-%d "))
        x = x.replace(u"前天", now_2.strftime(" %Y-%m-%d "))
        x = re.sub(r"[年月]", "/", x)
        x = re.sub(r"[日]", " ", x)
        x = re.sub(r"s{2,}", r" ", x)

        # XX前
        res = (re.search(r"(?P<S>d+)s*秒鐘?前", x) 
               or re.search(r"(?P<M>d+)s*分鐘前", x) 
               or re.search(r"(?P<H>d+)s*小時前", x) 
               or re.search(r"(?P<d>d+)s*天前", x) 
               or re.search("", "")).groupdict()
        if res:
            dt = now - timedelta(
                days=int(res.get("d", 0)),
                hours=int(res.get("H", 0)),
                minutes=int(res.get("M", 0)),
                seconds=int(res.get("S", 0))
            )
        # 不是幾天前分鐘前的形式
        else:
            # XX-XX-XX XX:XX:XX
            res = (re.search(r"(?P<Y>d+)[/-](?P<m>d+)[/-](?P<d>d+)(s+(?P<H>d{1,2}):(?P<M>d{2})(:(?P<S>d{2}))?)?",
                             x) or re.search("", "")).groupdict()
            if res == dict():
                # 匹配沒有年份的時候,格式 XX-XX XX:XX:XX  月-日 時:分:秒 或 17年10月10日 時:分:秒
                res = (re.search(
                    r"(?P<m>d{1,2})[/-](?P<d>d+)(s+(?P<H>d{2}):(?P<M>d{2})(:(?P<S>d{2}))?)?",
                    x) or re.search("", "")).groupdict()
            if res:
                Y = res.get("Y", now.year)
                Y = "20" + Y if len(str(Y)) == 2 else Y
                m = res.get("m", now.month)
                d = res.get("d", now.day)
                H = res.get("H", now.hour)
                M = res.get("M", now.minute)
                S = res.get("S", 0)
                dt = datetime(
                    year=int(Y) if Y != None and 1987 <= int(Y) <= now.year else now.year,
                    month=int(m) if m != None else now.month,
                    day=int(d) if d != None else now.day,
                    # 如果沒有時分秒,則被認定為00:00:00
                    hour=int(H) if H != None else 0,
                    minute=int(M) if M != None else 0,
                    second=int(S) if S != None else 0
                )
            else:
                # 1970-01-01 00:00:00
                # dt = datetime.utcfromtimestamp(0)+offset
                return ""
        # 時間可能超過當前時間,若超過則減去一年
        if int(time.mktime((dt - offset).timetuple())) > int(time.time()):
            # 時間超過當前時間,減去一年
            delta = timedelta(days=-365)
            real_time = (dt - offset) + delta
            real_time = real_time.strftime("%Y-%m-%d %H:%M:%S")
        else:
            real_time = (dt - offset).strftime("%Y-%m-%d %H:%M:%S")
        return real_time


if __name__ == "__main__":
    print(parse_date("2秒前", "auto", ""))
    print(parse_date("2分鐘前", "auto", ""))
    print(parse_date("2小時前", "auto", ""))
    print(parse_date("昨天 00:30", "auto", ""))
    print(parse_date("07-20", "auto", ""))

以上就是關于“python非標準時間的轉換方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸水县| 碌曲县| 石柱| 甘南县| 建阳市| 天镇县| 邯郸市| 巴中市| 永福县| 和龙市| 类乌齐县| 华容县| 玉树县| 鹤壁市| 易门县| 汉川市| 洪雅县| 康马县| 宣武区| 长泰县| 遂川县| 烟台市| 汉寿县| 新安县| 平江县| 南漳县| 涟水县| 定兴县| 开原市| 泽库县| 临澧县| 通榆县| 闻喜县| 平山县| 五指山市| 江陵县| 白沙| 湄潭县| 梨树县| 库尔勒市| 长丰县|