Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
2588-stdlib-Correct-calendar-rfc3339_to_system_...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2588-stdlib-Correct-calendar-rfc3339_to_system_time.patch of Package erlang
From 6ec9c3d42310671f62ff080bc325fb29fa13d3fa Mon Sep 17 00:00:00 2001 From: Hans Bolinder <hasse@erlang.org> Date: Thu, 27 Feb 2020 15:18:13 +0100 Subject: [PATCH] stdlib: Correct calendar:rfc3339_to_system_time() See also https://bugs.erlang.org/browse/ERL-1182. --- lib/stdlib/src/calendar.erl | 8 ++++---- lib/stdlib/test/calendar_SUITE.erl | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/stdlib/src/calendar.erl b/lib/stdlib/src/calendar.erl index 3a8fe2211b..ef6d1882e6 100644 --- a/lib/stdlib/src/calendar.erl +++ b/lib/stdlib/src/calendar.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2019. All Rights Reserved. +%% Copyright Ericsson AB 1996-2020. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -369,7 +369,7 @@ rfc3339_to_system_time(DateTimeString, Options) -> IsFractionChar = fun(C) -> C >= $0 andalso C =< $9 orelse C =:= $. end, {FractionStr, UtcOffset} = lists:splitwith(IsFractionChar, TimeStr), Time = datetime_to_system_time(DateTime), - Secs = Time - offset_adjustment(Time, second, UtcOffset), + Secs = Time - offset_string_adjustment(Time, second, UtcOffset), check(DateTimeString, Options, Secs), ScaledEpoch = erlang:convert_time_unit(Secs, second, Unit), ScaledEpoch + copy_sign(fraction(Unit, FractionStr), ScaledEpoch). @@ -689,13 +689,13 @@ offset(OffsetOption, Secs0) when OffsetOption =:= ""; offset(OffsetOption, _Secs) -> OffsetOption. +offset_adjustment(Time, Unit, "") -> + local_offset(Time, Unit); offset_adjustment(Time, Unit, OffsetString) when is_list(OffsetString) -> offset_string_adjustment(Time, Unit, OffsetString); offset_adjustment(_Time, Unit, Offset) when is_integer(Offset) -> erlang:convert_time_unit(Offset, Unit, second). -offset_string_adjustment(Time, Unit, "") -> - local_offset(Time, Unit); offset_string_adjustment(_Time, _Unit, "Z") -> 0; offset_string_adjustment(_Time, _Unit, "z") -> diff --git a/lib/stdlib/test/calendar_SUITE.erl b/lib/stdlib/test/calendar_SUITE.erl index 224c0d5625..bea5a217db 100644 --- a/lib/stdlib/test/calendar_SUITE.erl +++ b/lib/stdlib/test/calendar_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2019. All Rights Reserved. +%% Copyright Ericsson AB 1997-2020. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -223,6 +223,7 @@ rfc3339(Config) when is_list(Config) -> {'EXIT', _} = (catch do_format_z(253402300799+1, [])), {'EXIT', _} = (catch do_parse("9999-12-31T23:59:60Z", [])), {'EXIT', _} = (catch do_format_z(253402300799*1000000000+999999999+1, Ns)), + {'EXIT', _} = (catch do_parse("2010-04-11T22:35:41", [])), % OTP-16514 253402300799 = do_parse("9999-12-31T23:59:59Z", []), "0000-01-01T00:00:00Z" = test_parse("0000-01-01T00:00:00.0+00:00"), -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor