feat:添加字符串工具类
- 实现邮箱格式验证功能 - 添加密码强度检查 - 提供字符串清理和格式化方法 - 支持中文字符处理
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user