diff --git a/core/utils/StringUtils.gd b/core/utils/StringUtils.gd index bee8874..827f391 100644 --- a/core/utils/StringUtils.gd +++ b/core/utils/StringUtils.gd @@ -103,3 +103,97 @@ static func format_file_size(bytes: int) -> String: return str(int(size)) + " " + units[unit_index] else: return "%.1f %s" % [size, units[unit_index]] + +# 将UTC时间字符串转换为本地时间显示 +static func format_utc_to_local_time(utc_time_str: String) -> String: + # 解析UTC时间字符串 (格式: 2025-12-25T11:23:52.175Z) + var regex = RegEx.new() + regex.compile("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})") + var result = regex.search(utc_time_str) + + if result == null: + return utc_time_str # 如果解析失败,返回原字符串 + + # 提取时间组件 + var year = int(result.get_string(1)) + var month = int(result.get_string(2)) + var day = int(result.get_string(3)) + var hour = int(result.get_string(4)) + var minute = int(result.get_string(5)) + var second = int(result.get_string(6)) + + # 创建UTC时间字典 + var utc_dict = { + "year": year, + "month": month, + "day": day, + "hour": hour, + "minute": minute, + "second": second + } + + # 转换为Unix时间戳(UTC) + var utc_timestamp = Time.get_unix_time_from_datetime_dict(utc_dict) + + # 获取本地时间(Godot会自动处理时区转换) + var local_dict = Time.get_datetime_dict_from_unix_time(utc_timestamp) + + # 格式化为易读的本地时间 + return "%04d年%02d月%02d日 %02d:%02d:%02d" % [ + local_dict.year, + local_dict.month, + local_dict.day, + local_dict.hour, + local_dict.minute, + local_dict.second + ] + +# 获取相对时间描述(多少分钟后) +static func get_relative_time_until(utc_time_str: String) -> String: + # 解析UTC时间字符串 + var regex = RegEx.new() + regex.compile("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})") + var result = regex.search(utc_time_str) + + if result == null: + return "时间格式错误" + + # 提取时间组件 + var year = int(result.get_string(1)) + var month = int(result.get_string(2)) + var day = int(result.get_string(3)) + var hour = int(result.get_string(4)) + var minute = int(result.get_string(5)) + var second = int(result.get_string(6)) + + # 创建UTC时间字典 + var utc_dict = { + "year": year, + "month": month, + "day": day, + "hour": hour, + "minute": minute, + "second": second + } + + # 转换为Unix时间戳 + var target_timestamp = Time.get_unix_time_from_datetime_dict(utc_dict) + var current_timestamp = Time.get_unix_time_from_system() + + # 计算时间差(秒) + var diff_seconds = target_timestamp - current_timestamp + + if diff_seconds <= 0: + return "现在可以重试" + elif diff_seconds < 60: + return "%d秒后" % diff_seconds + elif diff_seconds < 3600: + var minutes = int(diff_seconds / 60) + return "%d分钟后" % minutes + else: + var hours = int(diff_seconds / 3600) + var minutes = int((diff_seconds % 3600) / 60) + if minutes > 0: + return "%d小时%d分钟后" % [hours, minutes] + else: + return "%d小时后" % hours