これはやや主観的な質問であり、大きな計画ではそれほど重要ではありませんが、それでも定期的に私を悩ませています。ファイル名にタイムスタンプを入れる自明の方法はないようです。
目的の問題は、ファイル名のタイムスタンプを並べ替え可能にする必要があることです。ただし、 「s」("yyyy-MM-ddTHH:mm:ss"
)や「u」( )などの.NETの並べ替え可能な日付形式"yyyy-MM-dd HH:mm:ssZ"
は、「:」文字のため、ファイル名では無効です。
もう1つは、ユニバーサルタイムとローカルタイムのどちらが使用されているかを簡単に確認できることです。実際には、ユーザーは世界時よりも現地時間を好むようです。
私は主に、基本的な時間形式でISO8601を使用することになりました。
- 現地時間のフォーマット文字列
"yyyy-MM-ddTHHmmsszz"
- UTCフォーマット文字列
"yyyy-MM-ddTHHmmssZ"
これらの形式では、現在の現地時間は"2009-08-08T151800+03"
UTCになります"2009-08-08T121800Z"
DateTime.Kindを「K」で自動検出して使用することもでき"yyyy-MM-ddTHHmmssK"
ますが、その場合は「:」文字を置き換える必要があります。
他に何か提案はありますか?
編集:これまでのいくつかのメモ:
複数のタイムゾーンが関係している場合、現地時間+タイムゾーン形式"yyyy-MM-ddTHHmmsszz"
はソートできなくなりました。ほとんどの場合、タイムゾーン情報が冗長である場合は削除し、それ以外の場合はUTCを使用するのが理にかなっています。
もう1つのことは、推測や間違いを防ぐために、UTCには常に「Z」、「GMT」、または「UTC」のマークを付ける必要があるということです。