我正在集成到一个遗留应用程序,该应用程序生成最大文件名大小为 8 个字符的数据文件。我可以控制名称,并且希望能够将其基于当前日期和时间,精确到秒。它必须是独一无二的。
有没有人有任何好的想法或算法来实现这一点,没有任何状态?
我正在使用 C#,但欢迎任何语言或伪代码想法!
编辑:任何字符 A-Za-z0-9 只允许(为了安全起见),
I think the easiest solution would be to store Unix time in hex, which would last 93 years from now.
If you can use more chars than 0-9 you could use a pattern where months and hours are encoded as letters
months = a-l
hours = a-y (depending on if you use w or not.)
days = 0-9 + a-...
This combined with 2 digit year and seconds in the hour as hex (3 chars) amounts to
yyMdhsss
您可以仅使用自 1/1/12 0:00 以来经过的秒数,但这只会持续 3 年。
假设不区分大小写,您可以使用 10 位数字和 26 个字母表以 36 为基数进行编码,这至少应该持续到您的一生。
在以上答案之一的范围内,
year = 2 YY it's diff year from reference year say 2000. we can have 26+26+10 aphabets to combine !
months = 1 M a-l map each month to single alphabet
days = 1 D a-z A-G
hours = 1 H a-y (map a char to a-x)
seconds = 1 60 a-z , A-Z 0-9 chars total 26+26+10 ==> 62 avaiable chars
以 GMT 格式保存所有日期以进行存储。
它适合 6 个字符!如果需要,我们可以再使用 1 个字符作为年份扩展。显然,我们需要自定义函数将时间日期从正常格式转换为这种格式。