[英]Java: convert date string to characters
我正在寻找一种将格式化日期转换为Java中字符的方法。
String fdate = DateTimeFormatter
.ofPattern("yyyyMMddHHmmssSSS")
.withZone(ZoneId.of("UTC"))
.format(
Instant.now(Clock.systemUTC()));
这给了我一个由17个字符组成的类似字符串,仅由数字组成。 我想将数字“转换”为字符,例如以十六进制形式使用所有字符,以缩短日期(实际上,我需要用最少的字符生成唯一ID ...客户约束)。
哪个会让我回来的:
Z5G1BJ9F...
接下来,我不需要能够转换回“常规”字符串。 仅允许使用普通字符[1-9a-zA-Z]。
有一个简单的方法吗?
谢谢。
yyyyMMddHHmmssSSS
格式的日期可能仍会导致ID重复。
要生成字符最少的唯一ID,请使用数据库序列生成下一个数字(或使用文件自己实现)。 如果序列从1开始并增加1,则不会得到较短的唯一数字。
如果您的约束是使用[1-9a-zA-Z]
字符,则可以应用Base58或类似的编码。 不幸的是,Base64使用+
, /
和=
因此不符合您的要求。 可以在BitcoinJ项目中找到Base58的示例实现:
BigInteger bi = BigInteger.valueOf(3471844090L);
assertEquals("16Ho7Hs", Base58.encode(bi.toByteArray()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.