datetime: fix values of unspecified fields in dt.parse()
datetime object can be created using `datetime.new()` and `datetime.parse()`. `datetime.new()` sets values of unspecified fields to appropriate values of fields in a Unix time (00:00:00 UTC on 1 January 1971, Thursday), see commit 43e10ed3 ("build, lua: built-in module datetime"): ``` tarantool> datetime.new() --- - 1970-01-01T00:00:00Z ... tarantool> datetime.new():totable() --- - sec: 0 min: 0 yday: 1 day: 1 nsec: 0 isdst: false wday: 5 tzoffset: 0 month: 1 year: 1970 hour: 0 ``` The function `datetime.parse` converts an input string with the date and time information into a datetime object. When fields are not specified in a input string their values becomes undefined: ``` tarantool> dt.parse('01:01:01', {format ='%H:%M:%S'}):totable() --- - sec: -59 min: -58 yday: 366 day: 31 nsec: 0 isdst: false wday: 1 tzoffset: 0 month: 12 year: 0 hour: -22 ... tarantool> ``` The commit fixes aforementioned behaviour of `datetime.parse()` by setting values for fields not specified by user to values of appropriate fields of Unix time. NO_DOC=bugfix Fixes #8588 (cherry picked from commit 9ac56a1222e916951010091fbdbfc497f4a4971d)
Showing
- changelogs/unreleased/gh-8588-setting-unspecified-fields-fix.md 4 additions, 0 deletions...logs/unreleased/gh-8588-setting-unspecified-fields-fix.md
- src/lib/core/datetime.c 9 additions, 1 deletionsrc/lib/core/datetime.c
- test/app-tap/datetime.test.lua 25 additions, 1 deletiontest/app-tap/datetime.test.lua
Loading
Please register or sign in to comment