我对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"));
?>
试一下,希望能成功