Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
2bc127bb
Commit
2bc127bb
authored
5 years ago
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
time/ISO8601: move code to ParseTimeOfDay()
parent
7770298a
sisyphus
0.23.15-alt1
0.23.14-alt1
0.23.13-alt1
0.23.12-alt1
0.23.11-alt1
0.23.8-alt3
0.23.8-alt2
0.23.8-alt1
0.21.24-alt1.1
0.21.24-alt1
gb-sisyphus-task339776.6100
gb-sisyphus-task337393.100
gb-sisyphus-task337176.300
gb-sisyphus-task334590.100
gb-sisyphus-task333607.100
gb-sisyphus-task331543.2500
gb-sisyphus-task328663.4700
gb-sisyphus-task325064.100
gb-sisyphus-task319111.4000
gb-sisyphus-task313704.100
gb-sisyphus-task312885.100
gb-sisyphus-task308905.3200
gb-sisyphus-task305294.500
gb-sisyphus-task304007.100
gb-sisyphus-task303674.1700
gb-sisyphus-task298681.300
gb-sisyphus-task296051.1000
gb-sisyphus-task274827.100
gb-sisyphus-task269249.2000
gb-sisyphus-task266579.400
gb-sisyphus-task258132.600
gb-sisyphus-task254601.200
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
15 deletions
+26
-15
ISO8601.cxx
src/time/ISO8601.cxx
+26
-15
No files found.
src/time/ISO8601.cxx
View file @
2bc127bb
...
@@ -108,6 +108,30 @@ ParseTimeZoneOffset(const char *&s)
...
@@ -108,6 +108,30 @@ ParseTimeZoneOffset(const char *&s)
return
d
;
return
d
;
}
}
static
const
char
*
ParseTimeOfDay
(
const
char
*
s
,
struct
tm
&
tm
,
std
::
chrono
::
system_clock
::
duration
&
precision
)
noexcept
{
const
char
*
end
;
if
((
end
=
strptime
(
s
,
"%T"
,
&
tm
))
!=
nullptr
)
precision
=
std
::
chrono
::
seconds
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H%M%S"
,
&
tm
))
!=
nullptr
)
/* no field separators */
precision
=
std
::
chrono
::
seconds
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H%M"
,
&
tm
))
!=
nullptr
)
/* no field separators */
precision
=
std
::
chrono
::
minutes
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H:%M"
,
&
tm
))
!=
nullptr
)
precision
=
std
::
chrono
::
minutes
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H"
,
&
tm
))
!=
nullptr
)
precision
=
std
::
chrono
::
hours
(
1
);
else
return
nullptr
;
return
end
;
}
std
::
pair
<
std
::
chrono
::
system_clock
::
time_point
,
std
::
pair
<
std
::
chrono
::
system_clock
::
time_point
,
std
::
chrono
::
system_clock
::
duration
>
std
::
chrono
::
system_clock
::
duration
>
ParseISO8601
(
const
char
*
s
)
ParseISO8601
(
const
char
*
s
)
...
@@ -138,22 +162,9 @@ ParseISO8601(const char *s)
...
@@ -138,22 +162,9 @@ ParseISO8601(const char *s)
if
(
*
s
==
'T'
)
{
if
(
*
s
==
'T'
)
{
++
s
;
++
s
;
if
((
end
=
strptime
(
s
,
"%T"
,
&
tm
))
!=
nullptr
)
s
=
ParseTimeOfDay
(
s
,
tm
,
precision
);
precision
=
std
::
chrono
::
seconds
(
1
);
if
(
s
==
nullptr
)
else
if
((
end
=
strptime
(
s
,
"%H%M%S"
,
&
tm
))
!=
nullptr
)
/* no field separators */
precision
=
std
::
chrono
::
seconds
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H%M"
,
&
tm
))
!=
nullptr
)
/* no field separators */
precision
=
std
::
chrono
::
minutes
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H:%M"
,
&
tm
))
!=
nullptr
)
precision
=
std
::
chrono
::
minutes
(
1
);
else
if
((
end
=
strptime
(
s
,
"%H"
,
&
tm
))
!=
nullptr
)
precision
=
std
::
chrono
::
hours
(
1
);
else
throw
std
::
runtime_error
(
"Failed to parse time of day"
);
throw
std
::
runtime_error
(
"Failed to parse time of day"
);
s
=
end
;
}
}
auto
tp
=
TimeGm
(
tm
);
auto
tp
=
TimeGm
(
tm
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment