feature/网络管理和Web部署系统 #2
@@ -103,3 +103,97 @@ static func format_file_size(bytes: int) -> String:
|
|||||||
return str(int(size)) + " " + units[unit_index]
|
return str(int(size)) + " " + units[unit_index]
|
||||||
else:
|
else:
|
||||||
return "%.1f %s" % [size, units[unit_index]]
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user