code

CSV / Excel에 가장 적합한 타임 스탬프 형식?

codestyles 2020. 8. 18. 07:45
반응형

CSV / Excel에 가장 적합한 타임 스탬프 형식?


CSV 파일을 작성하고 있습니다. 최소한 초 단위, 바람직하게는 밀리 초 단위로 정확한 타임 스탬프를 작성해야합니다. 최소한의 사용자 개입으로 Excel에서 정확하고 모호하지 않게 구문 분석 할 수 있도록 CSV 파일의 타임 스탬프에 가장 적합한 형식은 무엇입니까?


두 번째 정확도를 위해 yyyy-MM-dd HH : mm : ss가 트릭을 수행해야합니다.

나는 Excel이 순식간에 좋지 않다고 생각합니다 (COM 개체 IIRC와 상호 작용할 때 손실됩니다).


"yyyy-MM-dd HH : mm : ss"를 사용하라는 이전 제안은 괜찮지 만 Excel이 그보다 훨씬 더 정밀한 시간 해상도를 가지고 있다고 생각합니다. 나는 발견 이 게시물 오히려 신뢰할 수는 (스레드를 따라 당신은 산술 및 Excel 실험을 많이 볼 수 있습니다), 그리고 올바른 있다면, 당신은 당신의 밀리 초를해야합니다. 끝 부분에 소수점 자리를 붙일 수 있습니다. 예 : "yyyy-mm-dd hh : mm : ss.000".

Excel은 모든 정밀도를 볼 수있는 방식으로 사람의 개입없이 데이터 형식을 반드시 지정하지 않을 수 있습니다. 직장 내 컴퓨터에서 "yyyy-mm-dd hh : mm : ss.000"데이터 (메모장을 사용하여 직접)로 CSV를 설정하면 셀에 "mm : ss.0"이 표시되고 "m / d / yyyy hh : mm : ss AM / PM "입니다.

사람의 개입없이 셀에 전달되는 최대 정보 [1]의 경우 타임 스탬프를 날짜 부분과 시간 부분으로 분할하고 시간 부분은 초로 만 분할 할 수 있습니다. Excel이 주어진 셀에서 최대 3 개의 가시적 "수준"(1 초의 일부는 자체 수준)을 제공하고 사용자는 7 개 (년, 월, 일, 시간, 분, 초, 그리고 몇 분의 1 초.

또는 사람이 읽을 수있는 타임 스탬프가 필요하지 않지만 가능한 한 정확해야하는 경우 큰 숫자 만 저장하는 것이 좋습니다 (내부적으로 Excel은 분수 일수를 포함하여 일 수만 사용함). , "epoch"날짜 이후).


[1] 즉, 숫자 정보입니다. 가능한 한 많은 정보를보고 싶지만 계산에 신경 쓰지 않는다면 Excel이 문자열로 확실히 구문 분석 할 형식을 구성하여 그대로 둘 수 있습니다. 예 : "yyyymmdd.hhmmss.000".


"yyyy-MM-dd hh : mm : ss.000"형식은 모든 로케일에서 작동하지 않습니다. 일부 (최소한 덴마크어)의 경우 "yyyy-MM-dd hh : mm : ss, 000"이 더 잘 작동합니다.


double데이터 유형 을 사용했다면 Excel에서 재 계산이 잘 작동 할 것이라고 생각합니다.


제어판의 언어 설정으로 이동 한 다음 형식 옵션으로 이동하여 로케일을 선택하고 기본적으로 Windows에서 사용되는 선택한 로케일의 실제 날짜 형식을 확인하십시오. 예, 해당 타임 스탬프 형식은 로케일을 구분합니다. Excel은 CSV를 구문 분석 할 때 이러한 형식을 사용합니다.

더욱이, 로케일이 ASCII 이외의 문자를 사용하는 경우 해당하는 유니 코드 이전 Windows "ANSI"코드 페이지 (예 : CP1251)에서 CSV를 내 보내야합니다. Excel은 UTF-8을 허용하지 않습니다.


시간대에 관해서. Excel / OpenOffice의 수식이 결국 날짜 시간을 지역화 할 수 있도록 UTC 오프셋을 UTC에서 초로 저장해야합니다. 나는 이것이 앞에 0이있는 숫자를 저장하는 것보다 쉽다는 것을 알았습니다. -0900은 어떤 스프레드 시트 시스템에서도 잘 분석되지 않았고 가져 오기는 사람들이 수행하도록 교육하는 것이 거의 불가능했습니다.


"yyyy-mm-dd hh : mm : ss.000"형식은 모든 로케일에서 작동하지 않습니다. 일부 (최소한 덴마크어)의 경우 "yyyy-mm-dd hh : mm : ss, 000"이 더 잘 작동합니다.

user662894가 응답했습니다.

추가하고 싶습니다. SQL Server의 datetime2 데이터 유형에서 마이크로 초를 가져 오지 마십시오. Excel은 3 초 (즉, 밀리 초) 이상을 처리 할 수 ​​없습니다.

따라서 "yyyy-mm-dd hh : mm : ss.000000"은 작동하지 않으며 Excel에 이러한 종류의 문자열 (CSV 파일에서)이 제공되면 잘림이 아닌 반올림 을 수행 합니다.

이것은 마이크로 초 정밀도가 중요한 경우를 제외하고는 괜찮을 수 있습니다.이 경우 자동 데이터 유형 인식을 트리거하지 않고 문자열을 문자열로 유지하는 것이 좋습니다.


MM / dd / yyyy hh : mm : ss 형식을 사용해보십시오.

XML 파일을 만드는 Java 코드입니다.

xmlResponse.append ( "mydate>"). append (this.formatDate (resultSet.getTimestamp ( "date"), "MM / dd / yyyy hh : mm : ss a")). append ( "");

public String formatDate(Date date, String format)
{
    String dateString = "";
    if(null != date)
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        dateString = dateFormat.format(date);
    }
    return dateString;
}

그래서 이상하게도 CSV 날짜를 다른 방식으로 가져옵니다. 그리고 csv 파일에서 사용하는 형식에 따라 다르게 표시됩니다. 불행히도 ISO 8061 형식은 문자열로 제공됩니다. 따라서 날짜를 직접 다시 포맷 할 수 없습니다.

날짜로 들어오는 모든 항목에는 전체 정보가 포함되어 있지만 형식이 다릅니다 ... 마음에 들지 않으면 Excel에서 열의 새 형식을 선택할 수 있으며 작동합니다. (참고 : 올바른 날짜 / 시간으로 입력되었음을 알 수 있습니다. 오른쪽 정렬이 가능합니다 ... 문자열로 입력되면 왼쪽 정렬됩니다)

테스트 한 형식은 다음과 같습니다.

"yyyy-MM-dd"는 Excel에서 열 때 당연히 날짜로 표시됩니다. ( "MM / dd / yyyy"도 작동 함)

"yyyy-MM-dd HH : mm : ss"기본 표시 형식은 "MM / dd / yyyy HH : mm"(초가없는 날짜 및 시간)입니다.

"yyyy-MM-dd HH : mm : ss.fff"기본 표시 형식은 "HH : mm : ss"입니다 (시간 만 포함).


내가 추측 할 ISO 포맷은 좋은 아이디어이다. ( Wikipedia 기사 , 시간 정보 포함)

참고 URL : https://stackoverflow.com/questions/804118/best-timestamp-format-for-csv-excel

반응형