MCPcopy
hub / github.com/MAA1999/M9A / convert_to_timestamps

Function convert_to_timestamps

tools/activity_data/analyzeContent.py:337–376  ·  view source on GitHub ↗

将时间范围字符串转换为毫秒时间戳,正确处理夏令时

(time_range_str)

Source from the content-addressed store, hash-verified

335
336
337def convert_to_timestamps(time_range_str):
338 """
339 将时间范围字符串转换为毫秒时间戳,正确处理夏令时
340 """
341 # 提取时间和时区
342 pattern = r"(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2})\s*-\s*(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2})\s*(?:\d{2}:\d{2})?\s*\(UTC([+-]?\d+)\)"
343 match = re.search(pattern, time_range_str)
344
345 if not match:
346 raise ValueError(f"无法解析时间字符串: {time_range_str}")
347
348 start_time_str, end_time_str, utc_offset = match.groups()
349 utc_offset = int(utc_offset)
350
351 # 使用正确的时区对象 - 更智能地处理夏令时
352 # 对于UTC-5,使用美国东部时间或类似时区
353 if utc_offset == -5:
354 # 使用美国东部时区,会自动处理夏令时
355 tz = pytz.timezone("America/New_York")
356 else:
357 # 使用固定偏移时区(不处理夏令时)
358 tz = pytz.FixedOffset(utc_offset * 60) # pytz使用分钟作为偏移
359
360 # 解析时间字符串并附加时区信息
361 naive_start = datetime.strptime(start_time_str, "%Y-%m-%d %H:%M")
362 naive_end = datetime.strptime(end_time_str, "%Y-%m-%d %H:%M")
363
364 # 正确地将naive时间本地化到指定时区
365 start_time = tz.localize(naive_start)
366 end_time = tz.localize(naive_end)
367
368 # 如果结束时间是xx:59格式,添加59秒
369 if end_time.minute == 59:
370 end_time = end_time.replace(second=59)
371
372 # 转换为UTC毫秒时间戳
373 start_timestamp_ms = int(start_time.timestamp() * 1000)
374 end_timestamp_ms = int(end_time.timestamp() * 1000)
375
376 return start_timestamp_ms, end_timestamp_ms
377
378
379def process_combat_duration_cn(duration: str):

Callers 1

analyzeContentFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected