mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
add time.parse_iso
This commit is contained in:
parent
d03f0ec294
commit
137a473bb7
@ -320,6 +320,22 @@ pub fn parse(s string) Time {
|
||||
})
|
||||
}
|
||||
|
||||
// `parse_iso` parses time in the following format: "Thu, 12 Dec 2019 06:07:45 GMT"
|
||||
pub fn parse_iso(s string) Time {
|
||||
fields := s.split(' ')
|
||||
if fields.len < 5 {
|
||||
return Time{}
|
||||
}
|
||||
|
||||
pos := months_string.index(fields[2]) or { return Time{} }
|
||||
mm := pos/3 + 1
|
||||
|
||||
tmstr := malloc(s.len*2)
|
||||
count := int(C.sprintf(charptr(tmstr), '%s-%02d-%s %s'.str,
|
||||
fields[3].str, mm, fields[1].str, fields[4].str))
|
||||
return parse(tos(tmstr, count))
|
||||
}
|
||||
|
||||
pub fn new_time(t Time) Time {
|
||||
return {
|
||||
t |
|
||||
|
@ -185,3 +185,19 @@ fn test_parse() {
|
||||
&& t.hour == 12 && t.minute == 48 && t.second == 34
|
||||
}
|
||||
|
||||
fn test_parse_iso() {
|
||||
s1 := 'Thu, 12 Dec 2019 06:07:45 GMT'
|
||||
t1 := time.parse_iso(s1)
|
||||
assert t1.year == 2019 && t1.month == 12 && t1.day == 12
|
||||
&& t1.hour == 6 && t1.minute == 7 && t1.second == 45
|
||||
|
||||
s2 := 'Thu 12 Dec 2019 06:07:45 +0800'
|
||||
t2 := time.parse_iso(s2)
|
||||
assert t2.year == 2019 && t2.month == 12 && t2.day == 12
|
||||
&& t2.hour == 6 && t2.minute == 7 && t2.second == 45
|
||||
|
||||
s3 := 'Thu 12 Foo 2019 06:07:45 +0800'
|
||||
t3 := time.parse_iso(s3)
|
||||
assert t3.year == 0 && t3.month == 0 && t3.day == 0
|
||||
&& t3.hour == 0 && t3.minute == 0 && t3.second == 0
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user