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


88

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

목표 문제는 파일 이름의 타임 스탬프를 정렬 할 수 있어야한다는 것 입니다. 그러나 "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'로 표시되어야한다는 것입니다.

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


2
나는 큰 계획에서 중요하다고 생각 하는 것을 제외하고는이 모든 것에 동의합니다 . 귀하의 형식이 가장 좋습니다. 정수가 아닌 영역을 수용하기 위해 ISO8601에 지정된대로 4 자리 시간대를 사용합니다. ISO8601이 파일 이름에서 금지 된 콜론을 처리하지 않는다는 사실은 항상 나를 괴롭 혔습니다.
hpekristiansen

blog.xam.de/2016/07/… 의 게시물에서 ISO 8601에 기반한 형식을 제안합니다. 형식에 동의 할 수 있다면 세상을 더 쉽게 만들 것입니다 :-)
Dr. Max Völkel

"건설적이지 않은 것으로 폐쇄"?? 거기에 대한 모든 제안에 대한 이유는, 그래서 입니다 건설. 필요가 파일 이름의 미세한 철학적 세부 사항에 대한 질문에서 부끄러워 없습니다 : D
tanius

답변:


57

나는 이것을 사용한다 :

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

5
타임 스탬프로 시작한 다음 '내 파일'항목으로 시작 하지만 파일 이름을 알파벳순으로 정렬하여 시간순으로 파일을 볼 수 있기 때문에 거의 동일 합니다.
ChristopheD

2
@ChristopheD : 물론입니다. 그 경우에도 똑같이 할 것입니다. 내 대답에 대해 여러 다른 파일의 여러 버전이 있고 파일 이름별로 그룹화하려는 경우를 생각했습니다.
RichieHindle

2
개인적 _으로 이중 대시 대신 밑줄 ( ) 을 사용 하여 조각을 구분하는 것을 선호합니다 . (예 My-File_2009-12-31_23-59-59.txt)
Elie G.

A name_-_2019-11-04--15-04-36.642621403_-_2019-11-04--15-04-36.642622803.ext는 Linux 쉘 의 경우 괜찮습니다. 시간대는 없지만 나노초 정밀도입니다.
Ivan Black

14

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

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


9
파일 이름에 공백이 있습니까?
Saggi Malachi

10
공백에 어떤 문제가 있습니까?
Joey

41
예, 공간은 끔찍합니다. 나는 개인적으로 :-) 셀러리의 젖은 막대기로 죽음을 파일 이름에 공백을 사용하고 이길 사람 추적합니다
paxdiablo

1
@Saggi; 글쎄요, 아마 그럴 자격이 있었지만, 진지하게-공백이있는 파일 이름을 처리하지 않는 시스템 하나를 보여 주시겠습니까? 내가 모을 수 있었던 것에서, 관련된 URI가 없었으므로 공백에 대해 너무 걱정하지 않습니다. 물론 그 공간을 밑줄이나 T, 같은 다른 것으로 바꿀 수는 있지만 읽을 때 자연스럽지 않습니다.
You

1
나는 이것에 투표 할 것입니다 (그러나 나는 공백을 사용하지 않을 것입니다), 그 이유는 y2k1 문제를 연기 할 4 자리 연도 때문입니다 (그러나 y10k 문제는 아니지만, 누가 그것에 대해 XXXX를 주나요?).
paxdiablo

8

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

    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


1
@RichieHindle의 답변보다 날짜와 시간을 1 자 이하로 나누는 좋은 방법입니다.
Robino

3

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


1
나는 가능하다면 모든 것을 사람이 읽을 수 있도록 만드는 경향이 있습니다. 이것은 JSON 표기법과 같은 체계의 훌륭한 가치 중 하나입니다. 사람이 읽을 수 있어야한다고 생각하지 않더라도 나중에 사람이 읽을 수 있기를 원하는지 알 수 없습니다. 또한 디버깅을 쉽게하는 경향이 있습니다.
Edan Maor

링크가 끊어졌습니다. 무엇으로 연결 되었습니까?
rbatt

@rbatt 나는 그것이 일시적인 MSDN 문제라고 생각합니다-지금 돌아와야합니다.
Dan Diplo

2

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


1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.