调整时间格式

This commit is contained in:
淮新 2024-04-29 16:46:23 +08:00
parent fe381c3481
commit b8091f0f05
2 changed files with 25 additions and 1 deletions

View File

@ -2,7 +2,7 @@ import re
from typing import List, Union, Optional, Dict from typing import List, Union, Optional, Dict
from .service import Service from .service import Service
from src.utils import base from src.utils import base
from datetime import datetime from datetime import datetime, timedelta
from src.dao.sync_config import SyncBranchDAO, SyncRepoDAO, LogDAO from src.dao.sync_config import SyncBranchDAO, SyncRepoDAO, LogDAO
from src.dto.sync_config import SyncBranchDTO, SyncRepoDTO, RepoDTO, AllRepoDTO, GetBranchDTO, LogDTO, BranchDTO, ModifyRepoDTO from src.dto.sync_config import SyncBranchDTO, SyncRepoDTO, RepoDTO, AllRepoDTO, GetBranchDTO, LogDTO, BranchDTO, ModifyRepoDTO
from src.do.sync_config import SyncDirect, SyncType from src.do.sync_config import SyncDirect, SyncType
@ -156,6 +156,13 @@ class SyncService(Service):
return SYNCException(Status.SUCCESS) return SYNCException(Status.SUCCESS)
def time_trans(original_time_str):
original_time = datetime.strptime(original_time_str, '%Y-%m-%d %H:%M:%S')
new_time = original_time + timedelta(hours=8)
new_time_str = new_time.strftime('%Y-%m-%d %H:%M:%S')
return new_time_str
class LogService(Service): class LogService(Service):
def __init__(self) -> None: def __init__(self) -> None:
self.sync_log_dao = LogDAO() self.sync_log_dao = LogDAO()
@ -169,6 +176,8 @@ class LogService(Service):
log_.write(log_content) log_.write(log_content)
# 使用正则表达式匹配所有的日期和时间格式 # 使用正则表达式匹配所有的日期和时间格式
timestamps = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', log_content) timestamps = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', log_content)
# first_time = time_trans(timestamps[0]) if timestamps else datetime.now()
# last_time = time_trans(timestamps[-1]) if timestamps else datetime.now()
first_time = timestamps[0] if timestamps else datetime.now() first_time = timestamps[0] if timestamps else datetime.now()
last_time = timestamps[-1] if timestamps else datetime.now() last_time = timestamps[-1] if timestamps else datetime.now()
await self.sync_log_dao.insert_sync_repo_log(repo_name=repo_name, direct=direct, log_content=log_content, await self.sync_log_dao.insert_sync_repo_log(repo_name=repo_name, direct=direct, log_content=log_content,
@ -189,6 +198,8 @@ class LogService(Service):
log_.write(log_content) log_.write(log_content)
# 使用正则表达式匹配所有的日期和时间格式 # 使用正则表达式匹配所有的日期和时间格式
timestamps = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', log_content) timestamps = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', log_content)
# first_time = time_trans(timestamps[0]) if timestamps else datetime.now()
# last_time = time_trans(timestamps[-1]) if timestamps else datetime.now()
first_time = timestamps[0] if timestamps else datetime.now() first_time = timestamps[0] if timestamps else datetime.now()
last_time = timestamps[-1] if timestamps else datetime.now() last_time = timestamps[-1] if timestamps else datetime.now()
await self.sync_log_dao.insert_branch_log(repo_name, direct, branch_id, commit_id, await self.sync_log_dao.insert_branch_log(repo_name, direct, branch_id, commit_id,

View File

@ -1,6 +1,7 @@
import os import os
import time import time
import logging import logging
from datetime import datetime, timezone, timedelta
basedir = os.path.dirname(os.path.dirname( basedir = os.path.dirname(os.path.dirname(
os.path.dirname(os.path.abspath(__file__)))) os.path.dirname(os.path.abspath(__file__))))
@ -16,6 +17,9 @@ api_log_name = os.path.join(
sync_log_name = os.path.join( sync_log_name = os.path.join(
log_path, f'{time.strftime("%Y-%m-%d")}_sync.log') log_path, f'{time.strftime("%Y-%m-%d")}_sync.log')
# 创建一个时区为UTC+8的timezone对象
utc_plus_8_timezone = timezone(timedelta(hours=8))
class LogType: class LogType:
INFO = 'info' INFO = 'info'
@ -24,6 +28,14 @@ class LogType:
DEBUG = "debug" DEBUG = "debug"
# 自定义时间格式函数,不依赖于系统时区
def time_formatter(timestamp):
# 将时间戳转换为UTC+8时区的时间
utc_time = datetime.fromtimestamp(timestamp, utc_plus_8_timezone)
# 将datetime对象转换为time.struct_time
return utc_time.timetuple()
def sync_log(log_type: str, msg: str, log_name: str, user="robot"): def sync_log(log_type: str, msg: str, log_name: str, user="robot"):
name = os.path.join(log_path, log_name) name = os.path.join(log_path, log_name)
# 创建一个输出到控制台的handler并设置日志级别为INFO # 创建一个输出到控制台的handler并设置日志级别为INFO
@ -33,6 +45,7 @@ def sync_log(log_type: str, msg: str, log_name: str, user="robot"):
# 创建一个格式化器,指定日志格式 # 创建一个格式化器,指定日志格式
formatter = logging.Formatter('%(asctime)s | %(levelname)s | %(op_name)s - %(message)s', formatter = logging.Formatter('%(asctime)s | %(levelname)s | %(op_name)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S') datefmt='%Y-%m-%d %H:%M:%S')
formatter.converter = time_formatter
file_handler.setFormatter(formatter) file_handler.setFormatter(formatter)
# 创建一个logger # 创建一个logger