2012-08-03 4 views
0

jQuery에서 formatDate 함수를 통해 타임 스탬프로 저장하는 날짜가 있습니다. 그런 다음이 값을 다시 검색하여 이벤트 시간과 세부 정보를 사용자 캘린더에 추가하는 캘린더 파일 인 ics 파일을 만듭니다. 그러나 타임 스탬프 형식은 ics 파일에서 작동하지 않으며 정확한 날짜는 추가되지 않으므로 20091109T101015Z과 같은 값으로 변환해야합니다. timestamp가 현재 형식 인 것 같습니다. 1344466800000 이것은 this example에서 가져온 것으로, 내 ics 파일을 만들 때 다음과 같습니다.타임 스탬프를 .ics iCal 호환 날짜 형식으로 변환

내 PHP 파일 링크는 http : // domain입니다. ? COM/icsCreator.php의 startDate = 1344380400000 & endDate가 = 1345503600000 & 이벤트 = 우주 % 20Weather %이 작동하는 경우

<?php 
$dtStart=$_GET['startDate']; 
$dtEnd=$_GET['endDate']; 
$eventName=$_GET['event']; 
$location=$_GET['location']; 

... 
echo "CREATED:20091109T101015Z\n"; 
echo "DESCRIPTION:$eventName\n"; 
echo "DTEND:$dtEnd\n";  
echo "DTSTART:".$dtStart."\n"; 
echo "LAST-MODIFIED:20091109T101015Z\n"; 
echo "LOCATION:$location\n"; 
... 

?> 
+0

날짜 질문에 속하지 않는 모든 줄을 삭제할 수 있습니까? –

+0

옙 has done .. – Nicola

답변

3

참조처럼 20Workshop & 위치는 = 런던

현재 내 ICS 파일은 같습니다

date('Ymd\THis', $time) 

여기서 $time은 쿼리 문자열의 startDate 또는 endDate 일 수 있습니다. 당신이 시간을 원하지 않는 경우 :

date('Ymd', $time) 

참고 (니콜라 덕분에) 여기를 $time 유효한 UNIX 타임 스탬프 즉 그것은 시대 이후 (초)을 표시해야해야합니다. 이 시간 (밀리 초)을 나타내는 경우, 당신은 먼저 두 문자열의 끝에 \Z을 추가해야 케이 바와 같이 라스 지적 1000

편집하여 분할해야합니다.

편집으로는 니콜라지적, 당신이 정말로 그것을 필요하지 않습니다.

+0

형식 문자열의 끝에 ... \ Z가 누락되었습니다. –

+0

감사합니다. 이전에 doign이 아니었지만 지금은 날짜를 넣고 있습니다.하지만 잘못된 것입니다. 시작 시간 6/10/71 및 종료 시간 10/5/2007! – Nicola

+1

타임 스탬프를 1000으로 나눌 수 있습니다. 밀리 초 단위입니까? –

4

\ Z는 시스템에 시간대를 알려줍니다. Z는 줄루 또는 유니버설 타임입니다.

그렇다면 최종 사용자의 달력 응용 프로그램에서 시간대 설정이 타임 스탬프를 생성하는 시스템의 시간대 설정과 일치한다고 가정합니다.

미국에서는 혼자 여러 시간대가 있습니다. 따라서 사용자가 동일한 국가에 거주하는 사용자를 기반으로 할 수는 없습니다. 날짜가 제대로 달력으로 이동하려면, 당신은 플러스 또는 마이너스 시간으로 UTC로부터의 오프셋 (offset) 타임 존 및 분을 지정해야 위해서는

참고 : 날짜 ('Ymd 일수 \ THisP'); // P는 GMT에 대한 오프셋이므로 모든 달력 용도로 작동해야합니다. 그것은 DateTime 객체를 사용하는 것이 가장 좋습니다 PHP에서 날짜와 작업 할 때 밖으로 GMT

20150601T10:38+01:00 

에서 1 시간 변화에 대해 다음과 같이 뭔가를해야만 둘 것

, 당신은 쉽게 작업과 timezones을 변경할 수 있습니다.

// Start with your local timezone e.g 
$timezone = new \DateTimeZone('Europe/Amsterdam') ; 

// Don't be tempted to use a timezone abbreviation like EST 
// That could mean Eastern Standard Time for USA or Australia. 
// Use a full timezone: http://php.net/manual/en/timezones.php 

$eventdate = new DateTime ('1st September 2015 10:30', $timezone); 

// Convert the time to Universal Time 
$eventdate->setTimezone(new DateTimeZone('UTC')) ; // Universal/Zulu time 

// Return Event Date/Time in calendar ICS friendly format 
// comfortable in the knowledge that it is really in UTC time 
return $eventdate->format('Ymd\THis\Z') ; 
관련 문제