从指定日期获取年份php


Answers:


94
$date = DateTime::createFromFormat("Y-m-d", "2068-06-15");
echo $date->format("Y");

DateTime类在内部不使用Unix时间戳,因此它可以处理1970年之前或2038年之后的日期。


63

您可以使用strtotimedate函数,如下所示:

echo date('Y', strtotime('2068-06-15'));

但是请注意,PHP最多可以处理2038年

你可以在这里测试


如果您的日期始终采用这种格式,则也可以这样获得年份:

$parts = explode('-', '2068-06-15');
echo $parts[0];

我已经尝试过了,但是它给了我1970,这就是为什么php无法读取2038年以上年份的原因。
沙克提·辛格

@Shakti:因为正如我在回答中所说,PHP最多可以处理2038年,而您指定的年份是2068。您可以在此处进行测试:codepad.org/iwqtML6s
Sarfraz

是的,我同意你的意见,但我的输入最大为2069。所以我想我必须使用substr或类似的函数可以将其拆分,但问题是输入日期fromat可以更改,现在是yyyy-mm-dd,以后可能会更改到mm-dd-yyyy
Shakti Singh 2010年

1
@Shakti:正如我稍后在回答中所示,您也可以使用explode函数获取日期:$parts = explode('-', '2068-06-15'); echo $parts[0];。您可以在此处进行测试:codepad.org/HbS63y2n
Sarfraz

我不明白为什么OP给出了超出其范围的示例时,为什么要使用unix时间戳。
马林

4

我会用这个:

$parts = explode('-', '2068-06-15');
echo $parts[0];

看来日期来自始终相同的来源,这种方式使用explode更快。


3
  public function getYear($pdate) {
    $date = DateTime::createFromFormat("Y-m-d", $pdate);
    return $date->format("Y");
}

public function getMonth($pdate) {
    $date = DateTime::createFromFormat("Y-m-d", $pdate);
    return $date->format("m");
}

public function getDay($pdate) {
    $date = DateTime::createFromFormat("Y-m-d", $pdate);
    return $date->format("d");
}

2

<?php
list($year) = explode("-", "2068-06-15");
echo $year;
?>


2

您可以尝试使用strtotime()date()函数以最少的代码并使用标准方式进行输出。

echo date('Y', strtotime('2068-06-15'));

1

您可以使用php date()和explode()函数实现您的目标:

$date = date("2068-06-15");

$date_arr = explode("-", $date);

$yr = $date_arr[0];

echo $yr;

这就对了。快乐的编码:)


0

假设您将日期作为字符串(很抱歉,您的问题尚不清楚),可以将字符串拆分为-字符,如下所示:

$date = "2068-06-15";
$split_date = split("-", $date);
$year = $split_date[0];

6
请注意,split已弃用。
Sarfraz


0

您写的格式可以从YYYY-mm-dd更改为dd-mm-YYYY,您可以尝试在其中查找年份

$parts = explode("-","2068-06-15");
for ($i = 0; $i < count($parts); $i++)
{
     if(strlen($parts[$i]) == 4)
     {
          $year = $parts[$i];
          break;
      }
  }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.