最大ファイル名サイズが8文字のデータファイルを生成するレガシーアプリケーションに統合しています。名前を制御できます。現在の日時に基づいて、秒単位で名前を付けられるようにしたいと思います。一意である必要があります。
誰かがこれを達成するための素晴らしいアイデアやアルゴリズムを、状態なしで持っていますか?
私はC#を使用していますが、言語や擬似コードのアイデアは大歓迎です。
編集:A-Za-z0-9の文字のみが許可されます(安全側にあります)、
1/1/12 0:00から経過した秒数だけでうまくいくかもしれませんが、これはたった3年間続きます。
大文字と小文字を区別しないと仮定すると、アルファベットの10桁と26文字を使用して、36進数でコーディングできます。これは、少なくとも生涯続くはずです。
最も簡単な解決策は、Unix時間を16進数で格納することだと思います。これは、今から93年続くでしょう。
0〜9より多くの文字を使用できる場合は、月と時間が文字としてエンコードされるパターンを使用できます。
月=al
時間=ay(wを使用するかどうかによって異なります。)
日= 0-9 + a -.. ..
これは、2桁の年と1時間の秒を組み合わせたもので、16進数(3文字)は次のようになります。
yyMdhsss
上記の答えの1つに拡張して、
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を通常の形式からこの形式に変換するためのカスタム関数が必要です。