UTC不是整个日历日期(例如出生日期)的绝佳选择.
我的出生日期是1976-08-27.不是1976-08-27T00:00:00Z.
>我目前住在美国太平洋时区.
>我的下一个生日是2016-08-27T00:00:00-07:00至2016-08-28T00:00:00-07:00
>在UTC中,相当于2016-08-27T07:00:00Z,直到2016-08-28T07:00:00Z
当然,如果我在此之前移动到不同的时区,我会在一组完全不同的范围内庆祝我的生日.
>如果我搬到日本,那么我的生日将提前16个小时.
>我的下一个生日将是2016-08-27T00:00:00 09:00至2016-08-28T00:00:00 09:00
>在UTC中,相当于2016-08-26T15:00:00Z,直到2016-08-27T15:00:00Z
因此,出生日期(或周年日,出租日期等)应存储为简单的年,月和日.没有时间,也没有时区.
在MySQL中,使用DATE类型.不要使用DATETIME,TIMESTAMP或包含Unix时间的整数.
还要考虑年龄的评估取决于该人目前所在的时区,而不是他们出生的时区.如果提问者不知道该人的位置 – 则提问者的时区是相关的. “根据你,你多大了?”不一定和“你对我有多大了?”.
当然,你居住的地方实际上并不会使你年长或年轻 – 但这取决于我们如何根据我们当地的日历评估年龄.如果你反而问“我多久几分钟?”然后回答取决于您出生的瞬时时间点 – 可以用UTC测量,但通常作为当地时间和时区给出.但是,在通常情况下,人们通常不会收集这种详细程度.