> 백엔드 개발 > PHP 문제 > PHP에서 시간을 조작하는 방법이 있습니까?

PHP에서 시간을 조작하는 방법이 있습니까?

青灯夜游
풀어 주다: 2023-03-15 18:48:02
원래의
2362명이 탐색했습니다.

php에는 시간을 조작하는 방법이 있습니다. PHP는 다양한 날짜 및 시간 처리 방법을 제공합니다. 1. date()는 현지 날짜와 시간의 형식을 지정합니다. 2. mktime()은 날짜의 타임스탬프를 반환합니다. 3. idate()는 현지 시간의 형식을 정수로 지정합니다. 4. , strtotime(), 시간 문자열을 타임스탬프로 변환 등.

PHP에서 시간을 조작하는 방법이 있습니까?

이 튜토리얼의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터

php는 운영 시간 방식을 가지고 있습니다.

양식 제출 시간, 사용자 로그인 시간, 데이터베이스의 데이터 업데이트 및 삭제 시간 등 웹 개발에서는 날짜와 시간의 사용 및 처리가 필수적입니다. 이러한 작업이 수행되는 순간을 기록하려면 날짜와 시간을 통해 완료해야 합니다.

PHP는 다양한 날짜 및 시간 처리 기능을 제공합니다.

함수 설명
checkdate() 그레고리력 날짜를 확인합니다.
date_add() 날짜에 일, 월, 연도, 시, 분, 초를 추가하세요.
date_create_from_format() 지정된 형식에 따라 형식이 지정된 새 DateTime 객체를 반환합니다.
date_create() 새 DateTime 객체를 반환합니다.
date_date_set() 새 날짜를 설정하세요.
date_default_timezone_get() 모든 날짜/시간 함수에서 사용되는 기본 시간대를 반환합니다.
date_default_timezone_set() 모든 날짜/시간 함수에서 사용되는 기본 시간대를 설정합니다.
date_diff() 두 날짜의 차이를 반환합니다.
date_format() 지정된 형식에 따라 형식화된 날짜를 반환합니다.
date_get_last_errors() 날짜 문자열로 경고/오류를 반환합니다.
date_interval_create_from_date_string() 문자열의 해당 부분에서 DateInterval을 생성합니다.
date_interval_format() 시간 간격 형식을 지정합니다.
date_isodate_set() ISO 날짜를 설정합니다.
date_modify() 타임스탬프를 수정합니다.
date_offset_get() 시간대 오프셋을 반환합니다.
date_parse_from_format() 지정된 형식에 따라 지정된 날짜의 세부 정보가 포함된 연관 배열을 반환합니다.
date_parse() 지정된 날짜에 대한 세부 정보가 포함된 연관 배열을 반환합니다.
date_sub() 지정된 날짜에서 일, 월, 연도, 시, 분, 초를 뺍니다.
date_sun_info() 지정된 날짜 및 위치에 대한 일출/일몰 및 황혼 시작/황혼 종료에 대한 정보가 포함된 배열을 반환합니다.
date_sunrise() 지정된 날짜와 위치의 일출 시간을 반환합니다.
date_sunset() 지정된 날짜와 위치의 일몰 시간을 반환합니다.
date_time_set() 시간을 설정하세요.
date_timestamp_get() Unix 타임스탬프를 반환합니다.
date_timestamp_set() Unix 타임스탬프를 기준으로 날짜와 시간을 설정합니다.
date_timezone_get() 주어진 DateTime 객체의 시간대를 반환합니다.
date_timezone_set() DateTime 객체의 시간대를 설정합니다.
date() 현지 날짜 및 시간 형식을 지정합니다.
getdate() 타임스탬프의 날짜/시간 정보 또는 현재 현지 날짜/시간을 반환합니다.
gettimeofday() 는 현재 시간을 반환합니다.
gmdate() GMT/UTC 날짜 및 시간 형식을 지정합니다.
gmmktime() GMT 날짜의 UNIX 타임스탬프를 반환합니다.
gmstrftime() 로케일에 따라 GMT/UTC 날짜 및 시간 형식을 지정합니다.
idate() 현지 시간/날짜 형식을 정수로 지정합니다.
localtime() 현지 시간을 반환합니다.
microtime() 현재 Unix 타임스탬프의 마이크로초 수를 반환합니다.
mktime() 날짜의 Unix 타임스탬프를 반환합니다.
strftime() 로캘 설정에 따라 현지 시간/날짜 형식을 지정합니다.
strptime() strftime()에 의해 생성된 시간/날짜를 구문 분석합니다.
strtotime() 영어 텍스트 날짜 또는 시간 설명을 Unix 타임스탬프로 구문 분석합니다.
time() 현재 시간의 Unix 타임스탬프를 반환합니다.
timezone_abbreviations_list() 일광 절약 시간, 오프셋 및 시간대 이름이 포함된 연관 배열을 반환합니다.
timezone_identifiers_list() 모든 시간대 식별자가 포함된 숫자 배열을 반환합니다.
timezone_location_get() 지정된 시간대의 위치 정보를 반환합니다.
timezone_name_from_ abbr() 시간대 약어를 기준으로 시간대 이름을 반환합니다.
timezone_name_get() 시간대 이름을 반환합니다.
timezone_offset_get() GMT를 기준으로 시간대 오프셋을 반환합니다.
timezone_open() 새 DateTimeZone 개체를 만듭니다.
timezone_transitions_get() 시간대에 대한 모든 전환을 반환합니다.
timezone_version_get() 시간대 데이터베이스의 버전을 반환합니다.

다음은 몇 가지 시간 및 날짜 처리 방법에 대한 간략한 소개입니다.

1. PHP로 현재 시간 가져오기(5가지 방법)

날짜 및 시간 함수에서는 UNIX 타임스탬프를 가져오는 것이 매우 중요합니다. 타임스탬프는 일련의 문자입니다. GMT 1970년 1월 1일 00:00:00(베이징 시간 1970년 1월 1일 08:00:00)부터 현재까지의 총 밀리초 수를 나타냅니다. 현재 시간을 가져오는 몇 가지 함수는 다음과 같습니다.

  • gmmktime()

gmmktime() 함수는 GMT 날짜의 UNIX 타임스탬프를 가져올 수 있습니다. 구문은 다음과 같습니다:

int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
로그인 후 복사

이 함수의 매개변수는 오른쪽에서 왼쪽으로 비워 둘 수 있으며, 빈 매개변수는 해당 현재 GMT 값으로 설정됩니다.

사용 예는 다음과 같습니다.

<?php
echo gmmktime();  //没有设置参数, 则默认取得当前GMT时间
echo gmmktime(0,45,3,7,7,2016);  //设置参数表示GMT时间2016年7月7日0点45分3秒
?>
로그인 후 복사

위 프로그램을 실행하여 인쇄된 결과는 다음과 같습니다.

1467909956   1467852303
로그인 후 복사
  • mktime()

mktime() 날짜의 UNIX 타임스탬프도 얻을 수 있습니다. 구문은 다음과 같습니다.

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
로그인 후 복사

이 함수는 주어진 인수를 기반으로 UNIX 타임스탬프를 반환합니다. 타임스탬프는 UNIX 시대부터 주어진 시간까지의 시간(초)을 포함하는 긴 정수입니다.

gmmktime() 함수와 마찬가지로 이 함수의 매개변수도 오른쪽에서 왼쪽으로 생략할 수 있습니다. 생략된 매개변수는 현지 날짜 및 시간의 현재 값으로 설정됩니다.

사용 예는 다음과 같습니다.

<?php
echo mktime();  // 没有设置参数则默认取得当前GMT时间
echo mktime(0,45,3,7,7,2016);  //设置参数表示GMT时间2016年7月7日0点45分3秒
?>
로그인 후 복사

위 프로그램을 실행하면 인쇄된 결과는 다음과 같습니다.

1467910465 1467852303
로그인 후 복사
  • microtime()

microtime()은 현재 UNIX 타임스탬프와 마이크로초를 가져올 수 있습니다. 구문은 다음과 같습니다.

mixed microtime ([ bool $get_as_float ] )
로그인 후 복사

get_as_float 매개변수 값을 true로 설정하면 microtime()은 부동 소수점 숫자를 반환합니다. 매개변수가 없으면 "msec sec" 형식의 문자열을 반환합니다. 여기서 sec는 다음과 같습니다. UNIX 시대부터 현재까지의 초 수, msec는 마이크로초 부분입니다. 문자열의 두 부분 모두 초 단위로 반환됩니다.

사용 예는 다음과 같습니다.

<?php
echo microtime();  //返回 msec sec 格式字符串表示时间
echo "<br/>";
echo microtime(true);  //返回一个浮点型字符串表示时间
?>
로그인 후 복사

위 프로그램을 실행하여 인쇄된 결과는 다음과 같습니다.

0.40474900 1467910862
1467910862.4048
로그인 후 복사
  • time()

time() 함수는 현재 UNIX 타임스탬프를 반환할 수 있습니다. 구문은 다음과 같습니다.

int time ( void )
로그인 후 복사

time() 함수 구문은 비교적 간단합니다. 사용 예는 다음과 같습니다.

<?php
echo time();
?>
로그인 후 복사

위 프로그램을 실행한 결과는 다음과 같습니다.

1467911104
로그인 후 복사
  • getdate()

getdate()는 날짜와 시간 정보를 얻을 수 있습니다. 구문은 다음과 같습니다.

array getdate ([ int $timestamp = time() ] )
로그인 후 복사

이 함수는 타임스탬프를 기준으로 날짜 정보가 포함된 연관 배열 배열을 반환합니다. 타임스탬프가 제공되지 않으면 현재 현지 시간으로 간주됩니다(time() 함수와 동일한 값).

반환된 연관 배열의 키 이름 단위는 표와 같습니다.

을 반환합니다. mday일의 숫자 표현1~31wday monydayweekdaymonth0입니다.

getdate() 函数的使用示例如下:

<?php
echo "<pre class="brush:php;toolbar:false">";
var_dump(getdate());
?>
로그인 후 복사

执行以上程序的打印结果如下:

array(11) {
    ["seconds"]=>int(57)
    ["minutes"]=>int(18)
    ["hours"]=>int(17)
    ["mday"]=>int(7)
    ["wday"]=>int(4)
    ["mon"]=>int(7)
    ["year"]=>int(2016)
    ["yday"]=>int(188)
    ["weekday"]=>string(8) "Thursday"
    ["month"]=>string(4) "July"
    [0]=>int(1467911937)
}
로그인 후 복사

2、strtotime()与mktime():日期转时间戳

  • strtotime() 函数

使用 strtotime() 函数可以将任何字符串类型的日期/时间转换为 UNIX 时间戳,其语法格式如下:

strtotime($time [,$now = time()])
로그인 후 복사

其中 $time 为表示时间/日期的字符串,例如“2020-01-01”;$now 为可选参数,用来计算返回值的时间戳。函数执行成功会返回指定的字符串,执行失败返回 FALSE。

另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。

【示例】使用 strtotime() 函数获取指定时间的时间戳。

<?php
    echo &#39;当前的时间戳是:&#39;.time().&#39;<br>&#39;;
    echo &#39;使用“now”获取当前的时间戳:&#39;.strtotime(&#39;now&#39;).&#39;<br>&#39;;
    echo &#39;2000-09-10 的时间戳是:&#39;.strtotime("10 September 2000").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一天:&#39;.strtotime("+1 day").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一周:&#39;.strtotime("+1 week").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一周两天四小时两分钟:&#39;.strtotime("+1 week 2 days 4 hours 2 seconds").&#39;<br>&#39;;
    echo &#39;下一个周四的时间戳:&#39;.strtotime("next Thursday").&#39;<br>&#39;;
    echo &#39;上一个周一的时间戳:&#39;.strtotime("last Monday").&#39;<br>&#39;;
?>
로그인 후 복사

运行结果如下:

当前的时间戳是:1585273874
使用“now”获取当前的时间戳:1585273874
2000-09-10 的时间戳是:968515200
在当前的时间戳上加一天:1585360274
在当前的时间戳上加一周:1585878674
在当前的时间戳上加一周两天四小时两分钟:1586065876
下一个周四的时间戳:1585756800
上一个周一的时间戳:1584892800
로그인 후 복사

注意:根据具体时间的变化,程序每次运行的结果略有不同。

  • mktime() 函数

除了 strtotime() 函数外,我们还可以使用 PHP 中的 mktime() 函数来获取指定日期的 UNIX 时间戳,该函数的语法格式如下:

mktime ([$hour = date("H") [, $minute = date("i") [, $second = date("s") [, $month = date("n") [, $day = date("j") [, $year = date("Y") [, $is_dst = -1 ]]]]]]])
로그인 후 복사

参数说明如下:

  • $hour:表示一天中经过的小时数。如果 $hour 为负值,则表示前一天的适当时间;如果 $hour 大于 23,则表示第二天的适当时间。

  • $minute:表示一个小时内经过的分钟数。如果 $minute 为负值,则表示前一小时适当的分钟数;如果 $minute 大于 59,则表示下一小时中的适当分钟数。

  • $second:表示一分钟内经过的秒数。如果 $second 为负值,则表示前一分钟内的适当秒数;如果 $second 大于59,则表示下一分钟内的适当秒数。

  • $month:表示一年中经过的月份数,取值范围在 1 到 12 之间。如果 $month 小于 1(包括负值),则表示上一年的适当月份;如果 $month 大于 12,则表示下一年的适当月份。

  • $day:表示一个月中经过的天数,取值范围在 1 到 31 之间(取决于具体月份的天数)。如果 $day 小于 1(包括负值),则表示上个月的适当天数,比如 0 表示上个月的最后一天,-1 表示上个月的倒数第二天等等;如果 $day 大于本月的最大天数,则表示下个月的适当日期。

  • $year:表示具体的年份,可以是两位或四位数字,0 ~ 69 对应 2000 ~ 2069 年,70 ~ 100 对应 1970 ~ 2000年。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,$year 的合法范围是 1901 到 2038 之间,不过此限制自 PHP5.1.0 起已被克服了。

  • $is_dst:本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。不过本参数在 PHP5.1.0 中已被废弃,并在 PHP7.0.0 中移除。

提示:mktime() 函数中的参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果省略函数的所有参数,那么 mktime() 函数会和 time() 函数一样,返回当前的时间戳。

【示例】使用 mktime() 函数获取指定时间的时间戳。

<?php
    $time1 = time();
    echo &#39;当前的时间戳是:&#39;.$time1.&#39;<br>&#39;;
    $time2 = mktime(0, 0, 0, 3, 26, 20);
    echo &#39;2020-03-26 00:00:00 的时间戳是:&#39;.$time2.&#39;<br>&#39;;
    $time3 = mktime();
    echo &#39;省略函数的所有参数,获得的时间戳是:&#39;.$time3.&#39;<br>&#39;;
    $time4 = mktime(-1, -20, 6, 3, 26, 2020);
    echo &#39;2020-03-25 22:40:06 的时间戳是:&#39;.$time4.&#39;<br>&#39;;
?>
로그인 후 복사

运行结果如下:

当前的时间戳是:1585216256
2020-03-26 00:00:00 的时间戳是:1585152000
省略函数的所有参数,获得的时间戳是:1585216256
2020-03-25 22:40:06 的时间戳是:1585147206
로그인 후 복사

推荐学习:《PHP视频教程

위 내용은 PHP에서 시간을 조작하는 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
getdate() 함수는 연관 배열 키 이름
키 이름 설명 반환 값 예
초 숫자 표현 0 ~ 59
0~59
hours시간의 숫자 표현 0~23
day 주 1 주일의 수 (일요일) ~ 6 (토요일)
월 1 일 ~ 12 세의 수의 수 숫자 전체 연도예: 1999 또는 2019
연도의 숫자 표현0 ~ 365
요일의 전체 텍스트 표현 Monday to Sunday
월의 전체 텍스트 표현(예: 1월 또는 4월)January to 12월
UNIX epoch 이후의 초 수 및 반환 값 time() 및 date() 값은 시스템에 따라 다르지만 일반적인 값은 -2147483648 ~ 2147483647