【发布时间】:2018-10-30 09:01:26
【问题描述】:
我正在寻找一种将格式化日期转换为 Java 字符的方法。
String fdate = DateTimeFormatter
.ofPattern("yyyyMMddHHmmssSSS")
.withZone(ZoneId.of("UTC"))
.format(
Instant.now(Clock.systemUTC()));
这给了我一个类似的 17 个字符的字符串,仅由数字组成。我想将数字“转换”为字符,例如十六进制但使用所有字符,以缩短日期(实际上我需要生成具有最少字符的唯一 ID...客户约束)。
这会让我喜欢:
Z5G1BJ9F...
接下来我不需要能够转换回“普通”字符串。只允许使用常用字符 [1-9a-zA-Z]。
有简单的方法吗?
谢谢。
【问题讨论】:
-
您是否考虑过只使用 UNIX 时间戳?它可能比您建议的更短,但更容易使用。
-
是的,我想将其应用于时间戳。从 Instant 我可以得到 epochMilli(长)和纳秒(int),我也想将两者“编码”为字符
-
那么问题是什么?只需将该数字转换为基数 36。
-
提示:如果您的目标是创建一个通用唯一标识符,只需使用 universally unique identifier (UUID)。原始版本 1 UUID 结合了当前时刻、一个 MAC 地址、一个任意递增的数字和一些其他位,以确定一个 128 位的值。不要重新发明轮子。
标签: java string date character