PHP日期输出为yy而不是yyyy


php date output in yy instead of yyyy

我对PHP知之甚少。

我试图以dd/mm/yyyy格式显示或传递月的第一天,但结果是dd/mm/yy。

我的PHP查询是

<? php
$month='Aug'
$year='2015'
$c=pdgwoconnect(); 
$sqlmy="SELECT TO_DATE("$month/$year","MM/YYYY")FRMDT, TO_DATE("$nextm/$year","MM/YYYY")TODT FROM DUAL";
$resultmy = OCIParse($c, $sqlmy);
OCIExecute($resultmy);
while ($row = oci_fetch_array($resultmy, OCI_ASSOC)) {
    $frmdt= $row["FRMDT"];
    $todt= $row["TODT"];
    echo $frmdt;
    echo "</br>";
    echo $todt;
}
?>

结果为01-AUG-15和01-SEP-15

我希望格式为01-08-2015或01-AUG-2015,像这样

首先:为什么需要从DB中选择日期?

数据库引擎/数据库连接上设置的时区可以与您想要的时区不同,这会消耗资源(主要是时间)。因此,使用DB获取日期和时间似乎是不必要的,不建议的,也是低效的。

除非您有非常严格的理由,否则我建议您使用PHP来检索所需的日期,以下是您可以做到的:

<?php
   // your input data as posted
   $month='Aug';
   $year='2015';
   $day = '01'; // since you need a first day of the month
   //create proper timezone that you need - I chose "Europe/London"
   $timeZoneString = 'Europe/London';
   $timeZone = new DateTimeZone($timeZoneString);
   //date string has to match format given in DateTime::createFromFormat()
   $dateString = "{$year}-{$month}-{$day}";
   $dateTime = DateTime::createFromFormat('Y-M-d', $dateString, $timeZone);
   //you could see here what DateTime object looks like
   //var_dump($dateTime);
   //print the current date - the 1st Aug 2015 in deisred format
   echo $dateTime->format("d/m/Y"); // prints "01/08/2015"
   //create proper datetime interval
   $dateIntervalString = 'P1M'; // +1 month
   $dateInterval = new DateInterval($dateIntervalString);
   //add datetime interval to your date
   $dateTime->add($dateInterval);
   //print the date as you like, e.g. "dd/mm/yyyy"
   echo $dateTime->format("d/m/Y"); // prints "01/09/2015"

我检查了这段代码,它可以工作,它比你的方法有以下优点:

  • 不连接数据库(时间和资源消耗)
  • 它是灵活的时区(见有效的时区列表)
  • 你可以随时改变结果格式

顺便说一句:我强烈推荐阅读这篇关于日期、时间数据库相关最佳实践的文章。

可以使用如果你想要像2015年这样的年份,那么在日期格式中使用'Y'

<?php
 $date = date('d-m-Y');
echo $date
?>

可以使用php函数strtotime

<?php
    echo date("d-m-Y", strtotime("$todt")); 
?>

试一下,希望能成功