人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

python非標準時間的轉(zhuǎn)換

發(fā)布日期:2022-02-22 09:27 | 文章來源:腳本之家

可匹配結(jié)構(gòu):

今天~前天, 幾天前, 分鐘秒前等 | 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):
 """
  時間匹配模塊,可轉(zhuǎn)化為固定格式
  返回時間字符串 0000-00-00 00:00:00
  可匹配結(jié)構(gòu) |今天~前天, 幾天前,分鐘秒前等 | 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', ''))

到此這篇關(guān)于python非標準時間的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)python非標準時間內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國服務器租用

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關(guān)注
微信

關(guān)注官方微信
頂部