繁体   English   中英

Java:将日期字符串转换为字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM