将日期压缩为唯一的字母数字字符

Compress date to unique alphanumeric characters

如果我有一个日期 YYMMDDHHmmss,例如 190525234530,我如何计算出使用 0-9a-z(36 个字符)表示此日期的最少字符数?

我相信有 3,153,600,000 种组合(100 年 * 365 天 * 24 小时 * 60 分钟 * 60 秒)适合 32 位。这是否意味着我可以使用 4 个字符来表示这些日期?

我对如何进行转换有点迷茫,所以如果有人能告诉我数学知识,我将不胜感激。

我最终在 JavaScript 中做了这个,我决定我想压缩到 6 个字符,所以我创建了自己的时间,它生成了从 2019 年 1 月 1 日起长达 68 年的唯一 ID,它适用于我.

function getId() {
  //var newTime = parseInt(moment().format("X")) - 1546300800;//seconds since 01/01/2019
  var newTime = Math.floor((new Date()).getTime() / 1000) - 1546300800;//seconds since 01/01/2019
  var char = "0123456789abcdefghijklmnopqrstuvwxyz";//base 36
  return char[Math.floor(newTime / 36**5)]+
  char[Math.floor(newTime%36**5 / 36**4)]+
  char[Math.floor(newTime%36**4 / 36**3)]+
  char[Math.floor(newTime%36**3 / 36**2)]+
  char[Math.floor(newTime%36**2 / 36)]+
  char[Math.floor(newTime%36)];
}
console.log(getId());

感谢@user956584 这可以更改为:

function getId() {
  //var newTime = parseInt(moment().format("X")) - 1546300800;//seconds since 01/01/2019
  var newTime = Math.floor((new Date()).getTime() / 1000) - 1546300800;//seconds since 01/01/2019
  return newTime.toString(36);
}
console.log(getId());