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 비 표준 시간 전환 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python 비 표준 시간 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.