如何将当前日期和时间表示为最接近的8个字符?

时间:2012-10-11 06:59:41

标签: algorithm date format legacy

我正在集成到遗留应用程序,该应用程序生成最大文件名大小为8个字符的数据文件。我可以控制名称,我希望能够将其基于当前日期和时间,以最接近的秒数为基础。它必须是独一无二的。

有没有人有任何好的想法或算法来实现这一点,没有任何状态?

我使用C#,但欢迎使用任何语言或伪代码的想法!

编辑:任何字符A-Za-z0-9仅允许(为安全起见),

4 个答案:

答案 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转换为这种格式。