PHP日期格式将一年格式化为未来日期(如2050年),而不是1950年日期小于1970

时间:2017-09-25 08:02:33

标签: php date

我正在格式化像'121654'这样的日期,如下所示;

$date = DateTime::createFromFormat('mdy','121654');
echo $date->format('Y-m-d');

现在输出是;

2054年12月16日

但我希望它像1954-12-16。

直到1970年,它给出了正确的结果。但如果年份低于1970年,它将成为未来的日期。

有没有办法按我的意愿制作东西。

4 个答案:

答案 0 :(得分:0)

您应该使用Y代替y并在此处指定1954。

$date = DateTime::createFromFormat('mdY','12161954');
echo $date->format('Y-m-d');

答案 1 :(得分:0)

使用Y作为年份来设置1954年。

https://3v4l.org/4K7Ti

$in = "121654";
$in19 = Substr($in, 0,4) . "19". Substr($in, 4);

$date = DateTime::createFromFormat('mdY',$in19);
echo $date->format('Y-m-d');

答案 2 :(得分:0)

您可以检查生成的日期是否小于1970年,然后您可以使用函数将 X 年添加到其中,因此将来会是这样:

$date = DateTime::createFromFormat('mdY','12161960');
$date1970 = DateTime::createFromFormat('mdY','01011970');
if ($date < $date1970) {
    $newDate = $date->modify('+500 years');
}
echo $newDate->format('Y-m-d');

答案 3 :(得分:0)

如果格式保证为<nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">WebITD</a> </div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Home</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Page 1-1</a></li> <li><a href="#">Page 1-2</a></li> <li><a href="#">Page 1-3</a></li> </ul> </li> <li><a href="#">Page 2</a></li> <li><a href="#">Page 3</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li> <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> </ul> </div> </div> </nav> <div class="container"> <h2>Table Bootstrap</h2> <p>The .table-responsive class creates a responsive table which will scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, there is no difference:</p> <div class="table-responsive"> <table class="table"> <thead> <tr> <th>#</th> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>City</th> <th>Country</th> <th>Country2</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>2</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>3</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>4</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>5</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>6</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>7</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>8</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>9</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>10</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>11</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> <tr> <td>12</td> <td>Anna</td> <td>Pitt</td> <td>35</td> <td>New York</td> <td>USA</td> <td>Canada</td> </tr> </tbody> </table> </div> </div>,我会通过修复数据来接近它:

MMDDYY

您甚至可以在其间添加一个步骤来测试一些自定义截止年份,例如:

list($m, $d, $y) = str_split('121654', 2);
$date = DateTime::createFromFormat('mdY', "$m{$d}19$y");
相关问题