109

これはやや主観的な質問であり、大きな計画ではそれほど重要ではありませんが、それでも定期的に私を悩ませています。ファイル名にタイムスタンプを入れる自明の方法はないようです。

目的の問題は、ファイル名のタイムスタンプを並べ替え可能にする必要があることですただし、 「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」のマークを付ける必要があるということです。

ユリウス暦やその他のスターデートは、グレゴリオ暦を使用した日付の計算が脳死しているため、かっこいいです。

4

6 に答える 6

73

私はこれを使用します:

My-File--2009-12-31--23-59-59.txt
  • 場所がない
  • 破線を二重にして各ピースを分け、各ピースを見やすくする
  • 入力しやすい句読点 (ダッシュ) は 1 つだけ
  • 私は常にローカルタイムゾーンで作業しているため、タイムゾーンはありません。必要な場合は、UTC を使用--UTCし、時刻の後に " " を追加します。
于 2009-08-08T12:45:26.880 に答える
17

YYYY-MM-DD HHmmssタイムゾーンが特に必要な場合や、タイムゾーンをISO日付に解析する必要がある場合を除いて、ファイル名に使用します。そのような場合、ISO日付がおそらく好ましいでしょう。

編集:タイムゾーンは実際には必要ありません。すべてをUTCで保存し、すべてのUTCであることを人々に知らせる方が、すべてのタイムゾーンを指定するよりも効率的です。

于 2009-08-08T12:29:18.817 に答える
11

これが私が使用するものです:

private static string CreateMeaningfulFileName(string friendlyName, DateTime date)
{
    StringBuilder sb = new StringBuilder();
    foreach (string s in friendlyName.Split(new char[] { ' ' }))//remove spaces
    {
        sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower()));//capitalize each segment
    }
    sb.Append("_" + date.ToString("yyyy-MM-dd_HH-mm"));//add date
    return sb.ToString();
}

日付と説明が必要です。を使いましょう"I like DOGS"。結果:

ILikeDogs_1999-09-23_18-42
于 2013-01-23T15:50:43.530 に答える
3

タイムスタンプを人間が判読できるようにする必要はありますか? そうでない場合は、そのまま使用できますDateTime.Ticks.ToString()。非常に正確で、ソート可能で、特殊文字はありません。

于 2009-08-08T14:27:07.340 に答える
1

通常は yyyymmdd を使用します。さらに精度が必要な場合は、yyyymmddhhmmss に変更されます

于 2009-08-08T12:54:44.243 に答える