From: Vladimir Davydov via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Timur Safin <tsafin@tarantool.org>
Cc: Vladimir Davydov <vdavydov@tarantool.org>,
tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v5 0/8] Initial datetime implementation
Date: Wed, 18 Aug 2021 11:25:37 +0300 [thread overview]
Message-ID: <20210818082537.eyhaa2awaabsje56@esperanza> (raw)
In-Reply-To: <20210818082222.mofgheciutpipelz@esperanza>
[ += tarantool-patches - sorry dropped it from Cc by mistake ]
Putting aside minor hitches, like bad indentation here and there,
I have some concerns regarding the datetime API:
- I believe we shouldn't introduce interval in years/months, because
they depend on the date they are applied to. Better add datetime
methods instead - add_years / add_months.
- The API provides too many ways to extract the same information from a
datetime object (m, min, minute all mean the same). IMO a good API
should provide exactly one way to achieve a certain goal.
- AFAICS datetime.hour returns the number of hours passed since the
year 1970. This is confusing. I don't have any idea why anyone would
need this. As a user I expect them to return the hour of the current
day. Same for other similar methods, like month, minute, year.
- Creating a datetime without a date (with parse_time) looks weird:
tarantool> dt = datetime.parse_time('10:00:00')
---
...
tarantool> tostring(dt)
---
- 1970-01-01T10:00Z
...
Why 1970? I think that a datetime should always be created from a
date and optionally a time. If you want just time, you need another
kind of object - time. After all it's *date*time.
- datetime.days(2) + datetime.hours(12) + datetime.minutes(30)
looks cool, but I'm not sure it's efficient to create so many objects
and then sum them to construct an interval. It's surely acceptable
for compiled languages without garbage collection (like C++), but for
Lua I think it'd be more efficient to provide an API like this:
datetime.interval{days = 2, hours = 12, minutes = 30}
(I'm not a Lua expert so not sure about this)
- datetime.strftime, asctime, ctime - look too low level, which is no
surprise as they come from the C API. Judging by their names I can't
say that they present a datetime as a string in a certain format.
Maybe, rename strftime() to format() and make it a method of datetime
object (datetime:format)? Without a format, it could print ASCII
time. As for asctime, ctime, I'd drop them, because one can use
strftime to get the same result. Besides, they append \n to the
output, which looks weird:
tarantool> datetime.asctime(dt)
---
- 'Thu Jan 1 10:00:00 1970
'
...
next prev parent reply other threads:[~2021-08-18 8:25 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-15 23:59 Timur Safin via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 1/8] build: add Christian Hansen c-dt to the build Timur Safin via Tarantool-patches
2021-08-17 12:15 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:24 ` Safin Timur via Tarantool-patches
2021-08-18 8:56 ` Serge Petrenko via Tarantool-patches
2021-08-17 15:50 ` Vladimir Davydov via Tarantool-patches
2021-08-18 10:04 ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 2/8] lua: built-in module datetime Timur Safin via Tarantool-patches
2021-08-17 12:15 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:30 ` Safin Timur via Tarantool-patches
2021-08-18 8:56 ` Serge Petrenko via Tarantool-patches
2021-08-17 16:52 ` Vladimir Davydov via Tarantool-patches
2021-08-17 19:16 ` Vladimir Davydov via Tarantool-patches
2021-08-18 13:38 ` Safin Timur via Tarantool-patches
2021-08-18 10:03 ` Safin Timur via Tarantool-patches
2021-08-18 10:06 ` Safin Timur via Tarantool-patches
2021-08-18 11:45 ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 3/8] lua, datetime: display datetime Timur Safin via Tarantool-patches
2021-08-17 12:15 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:32 ` Safin Timur via Tarantool-patches
2021-08-17 17:06 ` Vladimir Davydov via Tarantool-patches
2021-08-18 14:10 ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 4/8] box, datetime: messagepack support for datetime Timur Safin via Tarantool-patches
2021-08-16 0:20 ` Safin Timur via Tarantool-patches
2021-08-17 12:15 ` Serge Petrenko via Tarantool-patches
2021-08-17 12:16 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:42 ` Safin Timur via Tarantool-patches
2021-08-18 9:01 ` Serge Petrenko via Tarantool-patches
2021-08-17 18:36 ` Vladimir Davydov via Tarantool-patches
2021-08-18 14:27 ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 5/8] box, datetime: datetime comparison for indices Timur Safin via Tarantool-patches
2021-08-17 12:16 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:43 ` Safin Timur via Tarantool-patches
2021-08-18 9:03 ` Serge Petrenko via Tarantool-patches
2021-08-17 19:05 ` Vladimir Davydov via Tarantool-patches
2021-08-18 17:18 ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 6/8] lua, datetime: time intervals support Timur Safin via Tarantool-patches
2021-08-17 12:16 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:44 ` Safin Timur via Tarantool-patches
2021-08-17 18:52 ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 7/8] datetime: perf test for datetime parser Timur Safin via Tarantool-patches
2021-08-17 19:13 ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 8/8] datetime: changelog for datetime module Timur Safin via Tarantool-patches
2021-08-17 12:16 ` Serge Petrenko via Tarantool-patches
2021-08-17 23:44 ` Safin Timur via Tarantool-patches
2021-08-18 9:04 ` Serge Petrenko via Tarantool-patches
2021-08-17 12:15 ` [Tarantool-patches] [PATCH v5 0/8] Initial datetime implementation Serge Petrenko via Tarantool-patches
[not found] ` <20210818082222.mofgheciutpipelz@esperanza>
2021-08-18 8:25 ` Vladimir Davydov via Tarantool-patches [this message]
2021-08-18 13:24 ` Safin Timur via Tarantool-patches
2021-08-18 14:22 ` Vladimir Davydov via Tarantool-patches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210818082537.eyhaa2awaabsje56@esperanza \
--to=tarantool-patches@dev.tarantool.org \
--cc=cover.1629071531.git.tsafin@tarantool.org \
--cc=tsafin@tarantool.org \
--cc=v.shpilevoy@tarantool.org \
--cc=vdavydov@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v5 0/8] Initial datetime implementation' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox