문제

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

도움이 되었습니까?

해결책

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

나는 Excel이 1 초의 분획에 그리 좋지 않다고 생각합니다 (COM Object 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 초의 일부가 자신의 레벨 인 경우)을주고 싶어하는 것처럼 보이며, 당신은 일곱 년, 몇 달, 몇 달, 시간, 몇 분, 초, 원합니다. 그리고 1 초의 분수.

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


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"CodePage (예 : CP1251)에서 CSV를 방출해야합니다. Excel은 UTF-8을 받아들이지 않습니다.

시간 존에 관해서. Excel/OpenOffice의 공식이 결국 DateTimes를 현지화 할 수있는 UTC에서 몇 초 동안 UTC 오프셋을 저장해야합니다. 나는 이것이 0 앞에 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;
}

따라서 이상하게 탁월한 Excel은 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"(시간 만 1 초만)입니다.

나는 그것을 추측 할 것이다 ISO-FORMAT 좋은 생각입니다. (위키 백과 기사, 또한 시간 정보와 함께)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top