날짜와 시간 처리는 프로그래머를 두통으로 만드는 문제 중 하나입니다. 동시에, 이들은 메타 데이터와 물건 분류에서 시간 기반 트리거에 이르기까지 소프트웨어 개발의 기초이며, 그 사이의 많은 응용 프로그램입니다.
날짜와 시간도 오류가 발생하기 쉽습니다. 부적절한 처리로 최종 사용자와 프로그래머 동료를 혼동 할 수 있습니다.
다음은 PHP 프로그래밍 언어의 날짜와 시간을 처리하는 방법에 대한 빠른 안내서입니다. 날짜 형식 및 조정과 같은 가장 일반적인 요구에 대한 참조로 설계되었습니다. 간단하지만 요구의 80%를 충당 할 가능성이 높습니다.
이 연구는 CSS- 트릭의 공식 학습 파트너 인 Frontend Masters에 의해 지원되었습니다.
프론트 엔드 개발 교육이 필요하십니까?
프론트 엔드 마스터스는 배우기에 가장 좋은 곳입니다. 그들은 가장 중요한 프론트 엔드 기술에 대한 과정을 제공합니다. 풀 스택 개발자가되고 싶으십니까? 이것이 최선의 선택입니다.
코스 #### 현재 날짜와 시간을 얻으십시오
날짜와 시간은 타임 스탬프 (예 : Epoch Time), DateTime 객체 및 문자열의 세 가지 형태로 표시 될 수 있습니다.
먼저 현재 날짜 및 시간에 대한 코드를 가져옵니다.
php $ now = new DateTime (); var_dump ($ now); // 객체 (dateTime)#1 (3) { // [ "date"] =?> // String (26) "2021-10-13 22 : 25 : 11.790490" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}
이것은 날짜 및 시간 문자열을 만드는 데 사용할 수있는 DateTime 객체를 제공합니다.
php $ now = new DateTime (); echo $ now-?> 형식 ( "YMD"); echo $ now-> 형식 ( "ymd h : i : s a");
Y가 연도를 나타내고, M은 달을 나타내고, D는 달의 날짜 등을 대표한다는 것을 직관적으로 이해할 수 있습니다. 전체 매개 변수 목록은 PHP 매뉴얼에서 찾을 수 있지만 참조를 위해 가장 일반적으로 사용되는 매개 변수 중 일부를 나열하겠습니다.
DateTime 객체는 타임 스탬프로 변환 할 수 있습니다.
php $ now = new DateTime (); echo $ now-?> getTimestamp ();
그러나 DateTime 객체를 구성하지 않고도 현재 타임 스탬프를 얻을 수 있습니다.
php echo time ();
특정 시간 동안 DateTime 객체를 구성하려면 (예 : 2011 년 7 월 14 일)? 형식의 날짜 문자열을 생성자에게 전달할 수 있습니다.
php $ date = new DateTime ( "2011-07-14"); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] =?> // String (26) "2011-07-14 00 : 00 : 00.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}생성자는 또한 다른 형식을 수락합니다.
php $ date = new DateTime ( "14-07-2011"); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] =?> // String (26) "2011-07-14 00 : 00 : 00.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}그러나 다음과 같은 모호한 형식을 알고 있어야합니다.
php $ date = new DateTime ( "07/14/2011"); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] =?> // String (26) "2011-07-14 00 : 00 : 00.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}모든 사람이 미국의 날짜 형식에 익숙해야한다고 생각할 수도 있습니다. 그러나 모든 사람이 그것에 익숙한 것은 아니며 다르게 해석 될 수 있습니다. PostgreSQL도 예외는 아닙니다.
공개되지 않은 경우 테이블을 만듭니다 .datetime_demo ( 생성 된 날짜 ); DateTime_demo (create_at) 값에 삽입 ('07/12/2011 '); datetime_demo에서 create_at를 선택하십시오. / * 2011-12-07 * /이것이 2011 년 7 월 12 일에 돌아올 것이라고 생각할 수도 있지만 2011 년 12 월 7 일에 돌아옵니다. 더 나은 접근 방식은 명시적인 형식을 사용하는 것입니다.
php $ date = datetime :: createfromformat ( 'm/d/y', "10/08/21"); var_dump ($ date); // 객체 (dateTime)#2 (3) { // [ "date"] =?> // String (26) "2021-10-08 16 : 00 : 47.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}타임 스탬프에서 DateTime 객체를 구성하려면 어떻게해야합니까?
php $ date = new DateTime (); $ DATE-?> SETTIMESTAMP (1634142890); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] => // String (26) "2021-10-13 23 : 34 : 50.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (12) "아시아/자카르타" //}타임 스탬프 객체를 형식의 날짜 문자열로 변환하려면 dateTime 객체를 만들 필요가 없습니다.
php echo 날짜 ( "ymd h : i a", time ());?>예를 들어 태평양 표준 시간, 동부 일광 시간 등을 다루는 경우 시간대 정보가 포함 된 DateTime 객체를 만들 수 있습니다.
php $ timezone = new dateTimezone ( "America/New_York"); $ date = new DateTime ( "2021-10-13 05:00", $ timezone); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] =?> // String (26) "2021-10-13 05 : 00 : 00.000000" // [ "timezone_type"] => // int (3) // [ "TimeZone"] => // String (16) "America/New_York" //} // 예를 들어, Eastern Daylight Time : New York $ Date = New DateTime ( "2021-10-13 05:00 EDT"); var_dump ($ date); // 객체 (dateTime)#2 (3) { // [ "date"] => // String (26) "2021-10-13 05 : 00 : 00.000000" // [ "timezone_type"] => // int (2) // [ "TimeZone"] => // String (3) "edt" //} $ date = new DateTime ( "2021-10-13 05:00 -04 : 00"); var_dump ($ date); // 객체 (dateTime)#1 (3) { // [ "date"] => // String (26) "2021-10-13 05 : 00 : 00.000000" // [ "timezone_type"] => // int (1) // [ "TimeZone"] => // String (6) "-04 : 00" //}시간대 정보가 포함 된 DateTime 객체를 만드는 세 가지 방법이 있습니다. Timezone_type 각 방법에 대해 다른 값을 허용합니다.
그러나 뉴욕 시간대에 표시된 날짜와 시간을 자카르타 시간대에 전시하기 위해 전환하려면 어떻게해야합니까?
php $ newyorkTimezone = New DateTimezone ( "America/New_York"); $ date = new DateTime ( "2021-11-11 05:00", $ NewYorkTimeZone); echo $ date-?> 형식 ( "YMD H : I A"); $ jakartatimezone = 새로운 DateTimezone ( "아시아/자카르타"); $ date-> settimezone ($ jakartatimezone); echo $ date-> 형식 ( "ymd h : i a");뉴욕이 오전 5 시인 자카르타는 2021 년 11 월 11 일 오후 5시입니다. 그러나 한 달 전, 자카르타는 다음과 같이 뉴욕보다 11 시간이 빨랐습니다.
php $ newyorkTimezone = New DateTimezone ( "America/New_York"); $ date = new DateTime ( "2021-10-11 05:00", $ NewYorkTimeZone); echo $ date-?> 형식 ( "YMD H : I A"); $ jakartatimezone = 새로운 DateTimezone ( "아시아/자카르타"); $ date-> settimezone ($ jakartatimezone); echo $ date-> 형식 ( "ymd h : i a");PHP는 일광 절약 시간을 자동으로 처리합니다.
미국의 날짜와 시간을 표시하는 일반적인 방법은 다음과 같습니다.
php $ now = new DateTime (); echo $ now-?> 형식 ( "m/d/y h : i a");그러나 프랑스의 누군가는 지역보다 더 일반적인 형식을 선호 할 수 있습니다. 그들은“이것은 끔찍하다”고 불평 할 수있다. 첫째, 미국 이외의 사람은 날짜 전 월을 제외하고는 아무도 없습니다. 둘째, 프랑스는 AM 또는 PM을 사용하지 않습니다-그들은 군대와 같은 24 시간 시스템을 사용합니다 (예 : 오후 2시 대신 14:00). 이것이 프랑스 지역 주민들을 만족시키는 것입니다.
php $ now = new DateTime (); echo $ now-?> 형식 ( "d/m/yh : i");그러나 이것은 특정 국가 또는 지역에 대한 깊은 이해가 필요합니다. 대신 날짜를 현지화 할 수 있습니다. 날짜를 현지화하려면 PHP에 대한 국제화 지원을 설치해야합니다. 우분투에서는이 단계를 수행 할 수 있습니다.
$ sudo apt-get 설치 php-intl프랑스어로 날짜와 시간을 표시하려면 intldateformatter를 사용할 수 있습니다.
$ locale = "fr_fr.utf-8"; $ Formatter = New IntlDateFormatter ($ locale, intldateformatter :: full, intldateformatter :: short, "Asia/Singapore"); $ date = new DateTime ( "2020-10-10 00:00 UTC"); echo $ formatter-> 형식 ($ date);프랑스 지역을 IntlDateFormatter의 첫 번째 매개 변수로 전달합니다.
두 번째 매개 변수는 날짜의 형식입니다. 세 번째 매개 변수는 시간 형식입니다. 날짜와 시간을 표시하는 시간대는 네 번째 매개 변수입니다.
intldateformatter :: full 및 intldateformatter :: short 이외에도 일반적으로 사용되는 다른 형식에는 intldateformatter :: none 및 intldateformatter :: long이 있습니다.
및 intldateformatter :: medium.
intldateformatter :: 없음 시간 또는 세 번째 매개 변수를 사용하는 경우 시간을 형식으로 포함하지 않습니다.
$ locale = "fr_fr.utf-8"; $ Formatter = New IntlDateFormatter ($ locale, intldateformatter :: long, intldateformatter :: none, "Asia/Singapore"); $ date = new DateTime ( "2020-10-10 00:00 UTC"); echo $ formatter-> 형식 ($ date);여행 시간을 보내고 과거와 미래로 돌아 갑시다. 먼저 dateinterval을 이해합시다 :
php $ interval = new dateInterval ( "P4M1W2DT2H5M"); // p 4m 1W 2d t 2h 5m // // p = 주간 간격 (연도, 월, 주, 일) // 4m = 4 개월 // 1w = 1 주 // 2d = 2 일 // // t = 시간 간격 (시간, 분, 초) // 2H = 2 시간 // 5m = 5 분?>P 및 T는주기 간격 및 시간 간격을 분리하는 데 사용됩니다. 우리가 미래로가는 방법은 다음과 같습니다.
php $ date = new DateTime ( "2021-10-14"); $ interval = new dateinterval ( "p2d"); Echo $ futuredate-> 형식 ( "YMD");우리가 과거로 돌아갈 수있는 방법은 다음과 같습니다.
php $ date = new DateTime ( "2021-10-14 10:00"); $ interval = new dateinterval ( "pt6h"); echo $ pastdate-> 형식 ( "YMD H : I");시간 여행을 위해 요일의 이름을 사용하려면 strtotime () 함수의 settimestamp () 메소드와 dateTime 객체를 사용할 수 있습니다.
php $ nexttuesday = strtotime ( "다음 튜토리얼"); $ date = new DateTime ( "2021-10-14"); $ DATE-?> SETTIMESTAMP ($ NEXTTUSSDAY); echo $ date-> 형식 ( "YMD");PHP 문서에서 strtotime () 매개 변수의 전체 목록을 참조하십시오.
캘린더 응용 프로그램의 일반적인 기능은 일주일에 한 번 또는 일주일에 한 번 반복 알림을 설정하는 것입니다. DatePeriod를 사용하여 시간을 나타낼 수 있습니다.
php $ start = new DateTime ( "2021-10-01"); $ end = new DateTime ( "2021-11-01"); $ interval = new dateinterval ( "p1w"); // 1 주 $ 범위 = 새로운 datePeriod ($ start, $ interval, $ end); // 2021 년 10 월 1 일부터 시작 (포함), 1 주마다 건너 뛰기 // 2021 년 11 월 1 일까지 (제외) foreach ($ date as $ date) { echo $ date-?> 형식 ( "ymd"); } // 2022-10-01 // 2022-10-08 // 2022-10-15 // 2022-10-22 // 2022-10-29트위터와 같은 서비스가 누군가의 x 분/시간/일 등을 보여줄 것임을 알고 있습니까? 현재 시간과 작업이 발생하는 시간 사이의 경과 시간을 계산하여이를 수행 할 수 있습니다.
php $ date = new DateTime ( "2022-10-30"); $ date2 = New DateTime ( "2022-10-25"); $ date3 = New DateTime ( "2022-10-10"); $ date4 = 새로운 DateTime ( "2022-03-30"); $ date5 = 새로운 DateTime ( "2020-03-30"); 함수 get_period_ago ($ enddate, $ startDate) { $ dateInterVal = $ endDate-?> diff ($ startDate); if ($ dateinterval-> envert == 1) { if ($ dateinterval-> y> 0) { $ dateinterval-> y를 반환합니다. } if ($ dateInterVal-> m> 0) { $ dateinterval-> m. } if ($ dateinterval-> d> 7) { return (int) ($ dateinterval-> d / 7); } if ($ dateInterVal-> d> 0) { $ DateInterval-> d. } } } echo get_period_ago ($ date, $ date2); echo get_period_ago ($ date, $ date3); echo get_period_ago ($ date, $ date4); echo get_period_ago ($ date, $ date5);diff () 메소드에서 dateinterval 객체를 얻은 후, 반전 속성을 확인하여 $ startDate 변수가 과거에 있는지 확인하십시오. 그런 다음 y, m 및 d 속성을 확인하십시오.
Dateinterval 객체 속성의 전체 목록은 PHP 문서에서 찾을 수 있습니다.
이제 날짜와 시간을 처리 할 때 일반적으로 사용되는 PHP 코드 스 니펫을 마스터했습니다. 현재 날짜와 시간을 가져와야합니까? 어쩌면 날짜를 어떻게 든 형식으로 형식화하거나 현지 시간대를 포함 시키거나 날짜를 비교해야 할 수도 있습니다. 이 모든 것이 여기 있습니다!
물론, 우리는 달력 관련 기능 등의 날짜와 시간에 대한 더 많은 방법과 기능을 논의하지 않았습니다. 더 많은 사용 사례 및 예제는 언제든지 PHP 설명서의 날짜 및 시간 섹션을 확인하십시오.
위 내용은 PHP 날짜 및 시간 레시피의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!