时间戳,是一类以 1970年1月1日 为起点(epoch)的,按秒、毫秒或天为单位计数的整数或小数,本质上是时间差值。

食用指南

注意事项

秒戳

以秒为单位的时间戳,一般是整数或小数。

时间差 GMT+0 时刻
242 814 647 13,9461 年 51 天 02:25:04 -
627 11,1669 年 243 天 07:30:08 -
368 8,9456 年 295 天 00:57:36 -
241 6,9730 年 208 天 01:12:32 -
240 1610 3,4865 年 104 天 00:36:16 -
1012 3,1709 年 289 天 01:46:40 -
239 813 1,7432 年 234 天 12:18:08 -
238 8716 年 117 天 06:09:04 -
237 4358 年 58 天 15:04:32 6325-04-08 15:04:32
1011 3170 年 357 天 09:46:40 5138-11-16 09:46:40
367 2484 年 332 天 15:21:36 4453-04-05 15:21:36
236 812 169 646 2179 年 29 天 07:32:16 4147-08-20 07:32:16
626 1801 年 45 天 03:13:04 3769-12-05 03:13:04
235 1089 年 197 天 03:46:08 3058-10-26 03:46:08
234 544 年 281 天 01:53:04 2514-05-30 01:53:04
1010 317 年 35 天 17:46:40 2286-11-20 17:46:40
233 811 272 年 140 天 12:56:32 2242-03-16 12:56:32
232 168 136 年 70 天 06:28:16 2106-02-07 06:28:16
366 69 年 9 天 05:45:36 2038-12-24 05:45:36
231 68 年 35 天 03:14:08 2038-01-19 03:14:08
230 810 645 34 年 17 天 13:37:04 2004-01-10 13:37:04
109 31 年 259 天 01:46:40 2001-09-09 01:46:40
625 29 年 18 天 09:20:32 1999-01-12 09:20:32
229 17 年 8 天 18:48:32 1987-01-05 18:48:32
228 167 8 年 186 天 21:24:16 1978-07-04 21:24:16
227 89 4 年 93 天 10:42:08 1974-04-03 10:42:08
108 3 年 62 天 09:46:40 1973-03-03 09:46:40
226 2 年 46 天 17:21:04 1972-02-16 17:21:04
365 1 年 334 天 20:09:36 1971-12-01 20:09:36
225 1 年 23 天 08:40:32 1971-01-24 08:40:32
224 88 166 644 194 天 04:20:16 1970-07-14 04:20:16
624 171 天 00:32:16 1970-06-21 00:32:16
107 115 天 17:46:40 1970-04-26 17:46:40
223 97 天 02:10:08 1970-04-08 02:10:08
222 48 天 13:05:04 1970-02-18 13:05:04
221 87 24 天 06:32:32 1970-01-25 06:32:32
364 19 天 10:33:36 1970-01-20 10:33:36
220 165 12 天 03:16:16 1970-01-13 03:16:16
106 11 天 13:46:40 1970-01-12 13:46:40
219 6 天 01:38:08 1970-01-07 01:38:08
218 86 643 3 天 00:49:04 1970-01-04 00:49:04
623 2 天 18:12:08 1970-01-03 18:12:08
217 1 天 12:24:32 1970-01-02 12:24:32
105 1 天 03:46:40 1970-01-02 03:46:40
216 164 18:12:16 1970-01-01 18:12:16
363 12:57:36 1970-01-01 12:57:36
215 85 09:06:08 1970-01-01 09:06:08
214 04:33:04 1970-01-01 04:33:04
104 02:46:40 1970-01-01 02:46:40
213 02:16:32 1970-01-01 02:16:32
212 84 163 642 01:08:16 1970-01-01 01:08:16
622 01:04:04 1970-01-01 01:04:04
211 00:34:08 1970-01-01 00:34:08
362 00:21:36 1970-01-01 00:21:36
210 00:17:04 1970-01-01 00:17:04
103 00:16:40 1970-01-01 00:16:40
29 83 00:08:32 1970-01-01 00:08:32
28 162 00:04:16 1970-01-01 00:04:16
27 00:02:08 1970-01-01 00:02:08
102 00:01:40 1970-01-01 00:01:40
26 82 641 00:01:04 1970-01-01 00:01:04
621 00:01:02 1970-01-01 00:01:02

毫秒戳

以毫秒为单位的时间戳,一般是整数。

时间差 GMT+0 时刻
629 42,9258 年 72 天 10:24:23.552 -
1016 31,7097 年 335 天 17:46:40.000 -
253 28,5616 年 151 天 08:59:00.992 -
252 1613 14,2808 年 75 天 16:29:30.496 -
3610 11,5936 年 8 天 14:41:02.976 -
251 817 7,1404 年 37 天 20:14:45.248 -
250 3,5702 年 18 天 22:07:22.624 -
1015 3,1709 年 289 天 01:46:40.000 -
249 1,7851 年 9 天 11:03:41.312 -
248 816 1612 648 8925 年 187 天 05:31:50.656 -
628 6923 年 189 天 13:19:44.896 8888-12-02 13:19:44.896
247 4462 年 276 天 02:45:55.328 6429-10-17 02:45:55.328
369 3220 年 162 天 11:04:28.416 5188-04-22 11:04:28.416
1014 3170 年 357 天 09:46:40.000 5138-11-16 09:46:40
246 2231 年 138 天 01:22:57.664 4199-11-24 01:22:57.664
245 815 1115 年 251 天 12:41:28.832 3084-12-12 12:41:28.832
244 1611 557 年 308 天 06:20:44.416 2527-06-23 06:20:44.416
1013 317 年 35 天 17:46:40.000 2286-11-20 17:46:40
243 278 年 336 天 15:10:22.208 2248-09-26 15:10:22.208
242 814 647 139 年 168 天 07:35:11.104 2109-05-15 07:35:11.104
627 111 年 244 天 10:16:46.208 2081-08-05 10:16:46.208
368 89 年 166 天 17:38:27.456 2059-05-25 17:38:27.456
241 69 年 266 天 15:47:35.552 2039-09-07 15:47:35.552
240 1610 34 年 315 天 19:53:47.776 2004-11-03 19:53:47.776
1012 31 年 259 天 01:46:40.000 2001-09-09 01:46:40
239 813 17 年 157 天 21:56:53.888 1987-06-03 21:56:53.888
238 8 年 261 天 10:58:26.944 1978-09-17 10:58:26.944
237 4 年 130 天 17:29:13.472 1974-05-10 17:29:13.472
1011 3 年 62 天 09:46:40.000 1973-03-03 09:46:40
367 2 年 176 天 23:49:24.096 1972-06-25 23:49:24.096
236 812 169 646 2 年 65 天 08:44:36.736 1972-03-06 08:44:36.736
626 1 年 292 天 09:50:35.584 1971-10-20 09:50:35.584
235 1 年 32 天 16:22:18.368 1971-02-02 16:22:18.368
234 198 天 20:11:09.184 1970-07-18 20:11:09.184
1010 115 天 17:46:40.000 1970-04-26 17:46:40
233 811 99 天 10:05:34.592 1970-04-10 10:05:34.592
232 168 49 天 17:02:47.296 1970-02-19 17:02:47.296
366 25 天 04:39:42.336 1970-01-26 04:39:42.336
231 24 天 20:31:23.648 1970-01-25 20:31:23.648
230 810 645 12 天 10:15:41.824 1970-01-13 10:15:41.824
109 11 天 13:46:40.000 1970-01-12 13:46:40
625 10 天 14:28:52.832 1970-01-11 14:28:52.832
229 6 天 05:07:50.912 1970-01-07 05:07:50.912
228 167 3 天 02:33:55.456 1970-01-04 02:33:55.456
227 89 1 天 13:16:57.728 1970-01-02 13:16:57.728
108 1 天 03:46:40.000 1970-01-02 03:46:40
226 18:38:28.864 1970-01-01 18:38:28.864
365 16:47:46.176 1970-01-01 16:47:46.176
225 09:19:14.432 1970-01-01 09:19:14.432
224 88 166 644 04:39:37.216 1970-01-01 04:39:37.216
624 04:06:16.336 1970-01-01 04:06:16.336
107 02:46:40.000 1970-01-01 02:46:40
223 02:19:48.608 1970-01-01 02:19:48.608
222 01:09:54.304 1970-01-01 01:09:54.304
221 87 00:34:57.152 1970-01-01 00:34:57.152
364 00:27:59.616 1970-01-01 00:27:59.616
220 165 00:17:28.576 1970-01-01 00:17:28.576
106 00:16:40.000 1970-01-01 00:16:40
219 00:08:44.288 1970-01-01 00:08:44.288
218 86 643 00:04:22.144 1970-01-01 00:04:22.144
623 00:03:58.328 1970-01-01 00:03:58.328
217 00:02:11.072 1970-01-01 00:02:11.072
105 00:01:40.000 1970-01-01 00:01:40
216 164 00:01:05.536 1970-01-01 00:01:05.536
363 00:00:46.656 1970-01-01 00:00:46.656
215 85 00:00:32.768 1970-01-01 00:00:32.768
214 00:00:16.384 1970-01-01 00:00:16.384
104 00:00:10.000 1970-01-01 00:00:10
213 00:00:08.192 1970-01-01 00:00:08.192
212 84 163 642 00:00:04.096 1970-01-01 00:00:04.096
622 00:00:03.844 1970-01-01 00:00:03.844
211 00:00:02.048 1970-01-01 00:00:02.048
362 00:00:01.296 1970-01-01 00:00:01.296
210 00:00:01.024 1970-01-01 00:00:01.024

日戳

以天为单位的时间戳,一般是整数。

时间差 GMT+0 时刻
365 16,5660 年 276 天 -
225 9,1929 年 347 天 -
224 88 166 644 4,5964 年 356 天 -
624 4,0483 年 41 天 -
107 2,7397 年 95 天 -
223 2,2982 年 178 天 -
222 1,1491 年 89 天 -
221 87 5745 年 227 天 7711-10-23
364 4601 年 251 天 6568-08-19
220 165 2872 年 296 天 4840-11-26
106 2739 年 265 天 4707-11-29
219 1436 年 148 天 3405-06-15
218 86 643 718 年 74 天 2687-09-23
623 652 年 348 天 2622-07-10
217 359 年 37 天 2328-11-12
105 273 年 355 天 2243-10-17
216 164 179 年 201 天 2149-06-07
363 127 年 301 天 2097-09-27
215 85 89 年 283 天 2059-09-19
214 44 年 324 天 2014-11-10
104 27 年 145 天 1997-05-19
213 22 年 162 天 1992-06-06
212 84 163 642 11 年 81 天 1981-03-20
622 10 年 194 天 1980-07-11
211 5 年 223 天 1975-08-11
362 3 年 201 天 1973-07-20
210 2 年 294 天 1972-10-21
103 2 年 270 天 1972-09-27
29 83 1 年 147 天 1971-05-28
28 162 256 天 1970-09-14
27 128 天 1970-05-09
102 100 天 1970-04-11
26 82 641 64 天 1970-03-06
621 62 天 1970-03-04
361 36 天 1970-02-06
25 32 天 1970-02-02
24 161 16 天 1970-01-17
101 10 天 1970-01-11
23 81 8 天 1970-01-09
22 4 天 1970-01-05
21 2 天 1970-01-03
20 80 100 160 360 620 640 1 天 1970-01-02

生成代码

#!/usr/bin/python3.11
from __future__ import annotations
import math
from datetime import datetime, timedelta
from itertools import chain


def is_integer(number: int | float) -> bool:
    n = round(number, 6)
    return int(n) + 0.0 == n


def calc_stamp_time(**kwargs) -> str:
    try:
        string = str(epoch + timedelta(**kwargs))
    except OverflowError:
        return '-'
    if string.endswith('.000'):
        return string[:-1]
    elif string.endswith('000'):
        return string[:-3]
    else:
        return string


def separate(number: int, bits=4, separator=',') -> str:
    def stream():
        counter = 1
        for d in str(number)[::-1]:
            if counter > bits:
                yield separator
                counter = 1
            yield d
            counter += 1

    return ''.join(stream())[::-1]


epoch = datetime(1970, 1, 1)
table_d = list()
table_s = list()
table_ms = list()
stamps = chain.from_iterable([
    map(lambda power: (1 << power, 2, power), range(64 + 1)),
    map(lambda power: (10 ** power, 10, power), range(19 + 1)),
    map(lambda power: (36 ** power, 36, power), range(13 + 1)),
    map(lambda power: (62 ** power, 62, power), range(11 + 1)),
])
for stamp, base, power in reversed(sorted(stamps)):
    # 底数和指数
    equal_base64 = is_integer(power64 := math.log(stamp, 64))
    equal_base16 = is_integer(power16 := math.log(stamp, 16))
    equal_base8 = is_integer(power8 := math.log(stamp, 8))
    cols = [
        f'2<sup>{power}</sup>' if base == 2 else '',
        f'8<sup>{int(power8)}</sup>' if equal_base8 else '',
        f'10<sup>{power}</sup>' if base == 10 else '',
        f'16<sup>{int(power16)}</sup>' if equal_base16 else '',
        f'36<sup>{power}</sup>' if base == 36 else '',
        f'62<sup>{power}</sup>' if base == 62 else '',
        f'64<sup>{int(power64)}</sup>' if equal_base64 else '',
        '<Time Delta>',
        '<GMT+0 Time>',
    ]

    # 日戳 --------------------------------
    years, days = divmod(stamp, 365)
    cols[-1], _, _ = calc_stamp_time(days=stamp).partition(' ')
    cols[-2] = f'{separate(years)}{days} 天' if years > 0 else f'{days} 天'
    table_d.append('| ' + ' | '.join(cols) + ' |')

    # 秒戳 --------------------------------
    minutes, seconds = divmod(stamp, 60)
    hours, minutes = divmod(minutes, 60)
    days, hours = divmod(hours, 24)
    years, days = divmod(days, 365)
    cols[-1] = calc_stamp_time(seconds=stamp)
    cols[-2] = (
            (f'{separate(years)}{days} 天 ' if years > 0 else f'{days} 天 ' if days > 0 else '')
            + f'{hours:02d}:{minutes:02d}:{seconds:02d}'
    )
    table_s.append('| ' + ' | '.join(cols) + ' |')

    # 毫秒戳 --------------------------------
    seconds, milliseconds = divmod(stamp, 1000)
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    days, hours = divmod(hours, 24)
    years, days = divmod(days, 365)
    cols[-1] = calc_stamp_time(milliseconds=stamp)
    cols[-2] = (
            (f'{separate(years)}{days} 天 ' if years > 0 else f'{days} 天 ' if days > 0 else '')
            + f'{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}'
    )
    table_ms.append('| ' + ' | '.join(cols) + ' |')

print('\n'.join(table_ms))
print('\n'.join(table_s))
print('\n'.join(table_d))