SessionZero-Client/sessionzero-client/scripts/helpers/datetime.gd

38 lines
952 B
GDScript

# datetime.gd
class_name DateTime
extends RefCounted
var _unix_time: float = 0.0
static func now() -> DateTime:
var dt = DateTime.new()
dt._unix_time = Time.get_unix_time_from_system()
return dt
static func from_unix(unix_seconds: float) -> DateTime:
var dt = DateTime.new()
dt._unix_time = unix_seconds
return dt
static func from_string(input: String) -> DateTime:
var s := input.strip_edges()
if s.ends_with("Z"):
s = s.substr(0, s.length() - 1)
var unix := Time.get_unix_time_from_datetime_string(s)
if s.find("-") == -1 or s.find(":") == -1:
push_error("Invalid datetime string format: %s" % input)
return null
var dt = DateTime.new()
dt._unix_time = unix
return dt
func to_unix() -> float:
return _unix_time
func _to_string() -> String:
var dict := Time.get_datetime_dict_from_unix_time(_unix_time)
return "%04d-%02d-%02dT%02d:%02d:%02dZ" % [
dict.year, dict.month, dict.day,
dict.hour, dict.minute, dict.second
]