Parse common UTC timestamps in process

This commit is contained in:
udo
2026-07-17 00:15:43 +00:00
parent 7789385ef5
commit 03ffeeb0da
2 changed files with 30 additions and 1 deletions
+18
View File
@@ -462,6 +462,24 @@ u64 time_parse(String time_String)
time_String = trim(time_String);
if(time_String == "")
return(0);
if(time_String.size() == 19 || (time_String.size() == 20 && time_String[19] == 'Z') || (time_String.size() == 23 && time_String.substr(19) == " UTC"))
{
struct tm parsed = {};
String calendar = time_String.substr(0, 19);
const char* end = strptime(calendar.c_str(), calendar[10] == 'T' ? "%Y-%m-%dT%H:%M:%S" : "%Y-%m-%d %H:%M:%S", &parsed);
if(end && *end == 0)
{
char normalized[20];
strftime(normalized, sizeof(normalized), "%Y-%m-%d %H:%M:%S", &parsed);
calendar[10] = ' ';
if(calendar == normalized)
{
time_t timestamp = timegm(&parsed);
if(timestamp >= 0)
return((u64)timestamp);
}
}
}
return(int_val(trim(shell_exec("date -u -d " + shell_escape(time_String) + " +'%s'"))));
}
u64 socket_connect(String host, u16 port)