我正在集成到遗留应用程序,该应用程序生成最大文件名大小为8个字符的数据文件。我可以控制名称,我希望能够将其基于当前日期和时间,以最接近的秒数为基础。它必须是独一无二的。
有没有人有任何好的想法或算法来实现这一点,没有任何状态?
我使用C#,但欢迎使用任何语言或伪代码的想法!
编辑:任何字符A-Za-z0-9仅允许(为安全起见),
答案 0 :(得分:2)
你可以通过自1/1/12 0:00以来经过的秒数,但这将持续3年。
假设不区分大小写,您可以使用字母表中的10位数和26位字母在基数36中进行编码,该字母应该至少持续一生。
答案 1 :(得分:2)
我认为最简单的解决方案是将Unix时间存储为十六进制,这将持续93 years from now。
答案 2 :(得分:2)
如果您可以使用比0-9更多的字符,您可以使用将月份和小时编码为字母的模式
月= a-l
小时= a-y(取决于你是否使用w。)
天= 0-9 + a -...
由于十六进制(3个字符)等于
,因此结合了小时内的2位数年份和秒数yyMdhsss
答案 3 :(得分:0)
在延伸到上述答案之一时,
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个字符作为年度延长。显然,我们需要自定义函数将timedate从normal转换为这种格式。