strtotime()
Language/PHP 2010. 7. 26. 14:03strtotime 함수...
문자열 형태의 날짜를 입력받아 UNIX timestamp 값을 돌려주는 함수다.
미국인들은 쉽게 쓸 수 있지만, 우리나라와는 날짜 표현 방법이 틀리기 때문에
약간 헷갈릴 소지가 있다. 그래서 정리해 봤다.
time() 1104151691
strtotime("now") 1104073200 //위와 같이 now는 php
5.0, 5.2에서 오작동 함.
strtotime("1972-09-24")
86108400
strtotime("72-9-24") 86108400
strtotime("72-09-24")
86108400
strtotime("9/24/72") 86108400
strtotime("24 September
1972") 86108400
strtotime("24 Sept 72") 86108400
strtotime("24 Sep
72") 86108400
strtotime("Sep 24, 1972")
86108400
strtotime("24-sep-72") 86108400
strtotime("24sep72")
86108400
strtotime("20:02") 1104145320
strtotime("8:02pm")
1104145320
strtotime("last day")
1103986800
strtotime("26-dec-2004") 1103986800
strtotime("next
day") 1104246000
strtotime("next monday") 1104678000
date("Y-m-d
H:i:s", strtotime("last day")) 2004-12-26 00:00:00
strtotime("1
year") 1135609200
strtotime("1 year ago") 1072450800
strtotime("3
years") 1198681200
strtotime("2 days")
1104246000
strtotime("tomorrow") 1104159600
strtotime("1 days")
1104159600
strtotime("yesterday") 1103986800
strtotime("-1 days")
1103986800
strtotime("1 days ago")
1103986800
strtotime("20041227") 1104073200
---------------------------------------------------------------------------------------------------------------
$time = time();
echo date("Y-m-d",strtotime("-1 day", $time))." 하루
전(어제)<br>";
echo date("Y-m-d",strtotime("now", $time))."
현재<br>";
echo date("Y-m-d",strtotime("+1 day", $time))." 하루
후(내일)<br>";
echo date("Y-m-d",strtotime("+1 week", $time))." 일주일
후<br>";
echo date("Y-m-d",strtotime("-1 month", $time))." 한달
전<br>";
echo date("Y-m-d",strtotime("+1 month", $time))."
다음달<br>";
echo date("Y-m-d",strtotime("+6 month", $time))."
6달후<br>";
echo date("Y-m-d",strtotime("+12 month", $time))."
12달후<br>";
echo date("Y-m-d",strtotime("next Thursday", $time))." 다음주
목요일<br>";
echo date("Y-m-d",strtotime("last Monday", $time))." 지난
월요일<br>";
echo date("Y-m-d",strtotime("10 September 2000", $time))."
2000년 9월 10일 <br>";
-----------------------------------------------------------------------------------------------------
문제)
strtotime() 함수를 이용하면 하루전 한달 뒤 등을 손쉽게 구할 수 있습니다.
그런데 오늘 즉 31일에 문제점이
발생하네요.
print date("Y년 m월",strtotime("-1 month"));
위와 같이 해서 출력 하면...
공교롭게도... 2005년 09월이 아닌 2005년 10월이 출력됩니다.
그건 아마도
30일에 해당되는 날짜 만큼만 빼서 발생하는 문제인것 같습니다.
해결)
위의 경우엔 strtotime()함수보다는
date("Y년
m월",mktime(0,0,0,date("m")-1,15,date("Y")));
가 가장 적당해 보입니다.
혹시 더 좋은 방법
있으면 ^^;
위에서 1이 아니고 15로 한거는 2월달을 생각해서 입니다.
ex)
if (Date("d") == "31") {
if (date('m')-1 == "12") {
$이전조사월 =
Date("Ym",mktime(0,0,0,date('m')-1,15,date('Y')-1));
$이전조사월영어 =
Date("F",mktime(0,0,0,date('m')-1,15,date('Y')-1));
}
else {
$이전조사월 = Date("Ym",mktime(0,0,0,date('m')-1,15,date('Y')));
$이전조사월영어 =
Date("F",mktime(0,0,0,date('m')-1,15,date('Y')));
}
if (date('m')-2
<= "12" && date('m')-2 >= "11") {
$이전전조사월 =
Date("Ym",mktime(0,0,0,date('m')-2,15,date('Y')-2));
$이전전조사월영어 =
Date("F",mktime(0,0,0,date('m')-2,15,date('Y')-2));
}
else {
$이전전조사월 = Date("Ym",mktime(0,0,0,date('m')-2,15,date('Y')));
$이전전조사월영어 =
Date("F",mktime(0,0,0,date('m')-2,15,date('Y')));
}
}
else {
$이전전조사월 = Date("Ym",strtotime("-2 month()"));
$이전전조사월영어 =
Date("F",strtotime("-2 month()"));
$이전조사월 = Date("Ym",strtotime("-1 month()"));
$이전조사월영어 =
Date("F",strtotime("-1 month()"));
}
[출처] strtotime() 함수|작성자 센스남
'Language > PHP' 카테고리의 다른 글
Warning: main(): URL file-access is disabled in the server (0) | 2010.08.01 |
---|---|
정규표현식 (0) | 2010.07.27 |
php xml parser (0) | 2010.07.21 |
자바스크립트 변수를 php변수로 넘기기 (0) | 2010.07.20 |
HTTP_REFERER (0) | 2010.07.16 |