2014-12-02 2 views
1

트위터 타임 스탬프 문자열을 유닉스 시간 (초후부터 초)으로 변환하려고합니다. 나는 잠시 동안 찾아 보았지만 작동하지 않는 것을 찾을 수 없습니다. 누구든지 "Mon Sep 24 03:35:21 +0000 2012"를 유닉스 시간으로 변환하는 방법을 알고 있습니까? 그렇지 않다면, sqlite db time 함수로?vba에서 유닉스 시간으로 트위터 API 타임 스탬프를 변환하는 방법

+0

VBA가 날짜를 인식 할 수 있도록하려면 해당 문자열을 다시 포맷해야합니다. 그 날짜를 Unix 시간으로 변환하려면'DateDiff ("s", date1, date2)'를 사용할 수 있습니다. –

답변

2

월 Sep 24 03:35:21 +0000 2012을 문자열로 사용하면 유닉스 (POSIX라고도 함) 날짜를 long으로 반환합니다.

Dim tt As String, ut As Long 
tt = "Mon Sep 24 03:35:21 +0000 2012" 
ut = ((CDate(Mid(tt, 5, 6) & ", " & Right(tt, 4) & Mid(tt, 11, 9)) + (IIf(Mid(tt, 21, 1) = Chr(45), -1, 1) * TimeSerial(Mid(tt, 22, 2), Mid(tt, 24, 2), 0))) - 25569) * 86400 
Debug.Print ut 

제공 한 샘플의 결과는 1348457721입니다.

편집 :

긍정적이고 부정적인 UTC 시간대 오프셋을 모두 설명하기 위해 위의 코드를 수정.

+0

시간대는 어떨까요? 사실 실제 작동하는 날짜를 파서가 표준 사양에 맞춰 테스트 한 것은 내부에 7 개의 마법 상수가있는 임시 코드가 더 좋을 것입니다. – xmojmr

+0

@xmojmr - UTC 오프셋을 보정하기 위해 위의 내용을 수정했지만 어떤 방법으로도 이해할 수 없었습니다 하루의 시간 (예 : * 86,400 *) 또는 1899 년 12 월 31 일에서 1970 년 1 월 1 일 (예 : * 25,569 *)까지 생성 된 * 마법의 상수를 줄이거 나 제거하십시오. 다른 5 * 마법 * 상수는 고정 길이 문자열의 다른 요소에 대한 문자 배치를 언급하지 않는 한 내 눈에 보이지 않습니다. – Jeeped

관련 문제