2012-09-07 7 views
0

다른 유령 기간을 기준으로 변수에 할당 할 정확한 유닉스 타임 스탬프를 만들려고합니다. 이러한 타임 스탬프 기간을 계산할 수있는 방법에 대한 아이디어가 있습니까?PHP - 정확한 유닉스 타임 스탬프

+1

"타임 스탬프"는 한 순간을 나타냅니다. "이번 달"에 대한 타임 스탬프가 필요하다고 말하면 현재 달의 시작 부분 (한 달에 한밤중)에 대한 타임 스탬프 또는 해당 월의 시작과 끝 경계를 나타내는 두 개의 타임 스탬프를 원하십니까 또는 무엇을? 명확히하십시오. – Celada

+0

@Celada, 예, 타임 스탬프는 경계를 계산하는 것입니다. 따라서 이번 달의 시작일 것입니다. – Wonka

+0

http://www.php.net/manual/en/book.datetime.php – Herbert

답변

3

시간 매뉴얼을 읽는 것이 좋습니다. 지난 자정

http://php.net/manual/en/function.time.php

오늘 -> 가져 오기 시간 + 분, 마이너스 24:00 시간 계산을 http://php.net/manual/en/function.strtotime.php

를 사용하여 긍정적 인

모든 다른 사람이 풀 수있는 당신의 가치를 얻을 수 http://php.net/manual/en/function.abs.php를 사용

최악의 경우 unix 시간으로 변환하고 차이를 얻으십시오. 당신은 28/29 feb 문제와 같이 언급 한 leapyears와 다른 시간 조건에 아무런주의를 기울이지 않고도 정확한 결과를 얻을 수 있습니다.

0

당신이 이것을 원하지 않는다고 말할 수 있습니까? 일반적인 유닉스 타임 스탬프를 저장하십시오 - 필요한 경우 로컬 타임 스탬프로 변환하십시오.

시간대가 바뀌거나 다른 사람이 일광 절약 시간을 이동할 때 데이터가 실제로 빨라졌습니다. 데이터가 얼마나 정확한지에 따라 윤초 (심지어 윤년까지)가 가능합니다.

시간 처리 코드는 매우 복잡하고/매우/똑똑합니다.

  • 실시간 스탬프를 저장하십시오.
  • 해당 기간의 시작 부분을 나타내는 시간 소인을 저장하십시오.
  • 필요할 때 빼십시오.
  • 모호한 버그는 피하십시오.
0

저는 PHP의 DateTime classes의 큰 지지자입니다. 그들은 시간을 다룰 때 발생하는 많은 좌절감을 완화합니다.

이 샘플은 사용 방법을 보여줍니다.

<?php 

header('Content-type: text/plain'); 

$today = new DateTime("today"); 
echo 'Today: ' . $today->format('Y-m-d H:i:s') . "\n"; 
echo 'Timestamp: ' . $today->getTimestamp() . "\n\n"; 

$thisweek = new DateTime("this week"); 
echo 'This Week: ' . $thisweek->format('Y-m-d') . "\n"; 
echo 'Timestamp: ' . $thisweek->getTimestamp() . "\n\n"; 

$thismonth = new DateTime("this month"); 
echo 'This Month: ' . $thismonth->format('Y-m') . "\n"; 
echo "Days this month: ", $thismonth->format('t') . "\n"; 
echo 'Timestamp: ' . $thismonth->getTimestamp() . "\n\n"; 

?> 

DateTimeZone 클래스를 사용하면이 기능을 향상시킬 수 있습니다.

관련 문제