これはやや主観的な質問であり、大きな計画ではそれほど重要ではありませんが、それでも定期的に私を悩ませています。ファイル名にタイムスタンプを入れる自明の方法はないようです。
客観的な問題は、ファイル名のタイムスタンプをソート可能にする必要があることです。ただし、「s」("yyyy-MM-ddTHH:mm:ss"
)や「u」("yyyy-MM-dd HH:mm:ssZ"
)などの.NETの並べ替え可能な日付形式は、「:」文字のため、ファイル名では無効です。
もう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」のマークを付ける必要があるということです。