プロが教える店舗&オフィスのセキュリティ対策術

時間を登録する機械があったとします。

2022年6月3日15時23分30秒
これを数字のみにして並べると
202263152330 となります。
そしてこれを登録番号1番の人が登録します。
1番の人が登録した場合、数字列の先頭に必ず1が付きます。

1202263152330

同じように登録番号2番の人が数字列を登録します。
2022年7月3日15時23分30秒
202273152330
2番の人が登録したので

2202273152330

登録が完了した後にまた登録する場合、1秒最低でも1秒の時間が必要とします。

これで数字列は決してかぶることのない数字列になるのですが、桁数も多くなってしまいます。
この数字列の桁数を出来る限り少なくし更にかぶらないようにするには
どうしたら良いでしょうか?

A 回答 (7件)

運用期限を決めて日付部分を固定桁数にした方がいいよ。


運用開始日を1日目としてその日からの経過日数の整数値を4桁固定。
その日の午前0時0分0秒を0としてそこからの経過秒数を5桁。
 (23時59分59秒で86399秒)

1件目の運用初日の午前8時なら、1000128800
後ろから5桁とって28800→8:00am
さらに後ろから4桁とって、0001→運用開始日前日+00001
残りが連番で「1」。
    • good
    • 0

日付 (と時間) を圧縮するなら「特定の時点からの経過時間」を使うのがいいんだろうけど, うるう秒をどう扱うかねぇ....



#6 の定義についていうと, 「週」が「月曜日に始まる連続する 7日間」を意味するのだから「週の始め」は月曜日で確定. 「月の最初の週」は定義されていないけど「月の 4日を含む週」ないし「月の最初の木曜日を含む週」を「月の最初の週」と定義すると「年の最初の週」と整合的.
    • good
    • 0

日時に関して、エクセルは内部では「シリアル値」で数値を持っています。

1900年1月1日から始まる連番です。時刻も同様にシリアル値になっています。

その方がコンパクトだし、差を取るのが楽。

しかも、協定世界時(UTC)で持っているから、海外とのやりとりも簡単。

ただ、週の初めを何曜日にするかとか、月の最初の週はどこからとか言い出すと、定義で混乱しますが・・・。

今のIoTの業界では、タグ付けでシリアル値を使うのが普通。
    • good
    • 0

今時桁数けちっても意味ないのでμ秒まで振っちゃいましょう(^_^;)


識別出来さえすればよいならGUID割り当てておしまい。
    • good
    • 0

>この数字列の桁数を出来る限り少なくし更にかぶらないようにする



無理でしょうね。
あなたがあげた例に依れば、登録した人数が多ければ、
それだけ 桁数が増えざるを得ない筈ですから。
数字だけでなく、アルファベットなどの文字が使用できるなら、
同じ数列の部分を 文字に置き換えれば、多少桁数は 減りますね。
    • good
    • 0

先着順に一連番号を付ければいいだけでは?

    • good
    • 0

そもそも、その「登録番号」とは何か?


同じ1秒内の登録順位のこと?
「9」までで足りるのですか?
逆にいえば、同じ秒に重複して登録することはあり得るのか?
なければ「分」でも「時間」でも、あるいは「日付だけ」でもよいのでは?

何年続けるつもりか分からないが、「2022」は必要?
もし年が必要なら、まさか100年はやらないのだろうから、下2桁の「22」で十分でしょう。
あとは「月」は「10月 = A、11月 = B、12月 = C」とすれば1桁で済む。

そもそもが、単なる「連番」ではだめなのか?
何番目が何時何分かの記録をしておけば時間管理はできる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!