簡體   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