[.net] 파일 이름에서 가장 좋아하는 날짜 및 시간 형식은 무엇입니까? [닫은]

이것은 다소 주관적인 질문이며 큰 계획에서는 그다지 중요하지 않지만 정기적으로 나를 괴롭히는 것입니다. 파일 이름에 타임 스탬프 를 넣는 자명 한 방법은없는 것 같습니다 .

목표 문제는 파일 이름의 타임 스탬프를 정렬 할 수 있어야한다는 것 입니다. 그러나 “s” ( "yyyy-MM-ddTHH:mm:ss") 및 “u” ( "yyyy-MM-dd HH:mm:ssZ") 와 같은 .NET 정렬 가능 날짜 형식 은 ‘:’문자로 인해 파일 이름에서 유효하지 않습니다.

다른 한가지는 세계 표준시나 현지 시각 이 사용 되는지 쉽게 확인할 수 있다는 것입니다 . 실제로 사용자는 표준시보다 현지 시간을 선호하는 것 같습니다.

대부분 기본 시간 형식으로 ISO 8601 을 사용했습니다 .

  • 현지 시간 형식 문자열 "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를 사용하는 것이 좋습니다.

또 다른 한 가지는 추측과 실수를 방지하기 위해 UTC는 항상 ‘Z’, ‘GMT’또는 ‘UTC’로 표시되어야한다는 것입니다.

율리우스 날짜 및 기타 우주력은 와 날짜 산술 때문에 멋진 그레고리 안 달력은 뇌사입니다.



답변

나는 이것을 사용한다 :

My-File--2009-12-31--23-59-59.txt
  • 공백 없음
  • 조각을 구분하기 위해 이중 대시를 사용하여 각 조각을 쉽게 볼 수 있습니다.
  • 단 하나의 구두점 문자 (대시)로 쉽게 입력 할 수 있습니다.
  • 나에게는 항상 현지 시간대로 작업하기 때문에 시간대가 없습니다. 필요한 경우 UTC로 이동 --UTC하여 시간 뒤에 ” “를 추가 합니다.


답변

YYYY-MM-DD HHmmss시간대가 특별히 필요하거나 ISO 날짜로 구문 분석 할 필요가없는 한 파일 이름에 사용 합니다. 이 경우 ISO 날짜가 선호 될 것입니다.

편집 : 시간대가 실제로 필요하지 않아야합니다. 모든 것을 UTC로 저장하고 사람들에게 모든 것이 UTC임을 알리는 것이 모든 것의 시간대를 지정하는 것보다 더 효율적입니다.


답변

내가 사용하는 것은 다음과 같습니다.

    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


답변

타임 스탬프가 사람이 읽을 수 있어야한다는 요구 사항이 있습니까? 그렇지 않은 경우 DateTime.Ticks.ToString () 사용할 수 있습니다 . 매우 정확하고 정렬 가능하며 특수 문자가 없습니다.


답변

일반적으로 yyyymmdd를 사용합니다. 추가 정밀도가 필요한 경우 yyyymmddhhmmss로 변경됩니다.


답변

나는 유닉스 타임 스탬프를 사용합니다. epoch에서 몇 초가 지 났는지. 모든 시간은 UTC입니다. 그러나 원한다면 시간대 데이터를 접두사로 사용할 수 있습니다.


답변