gpt4 book ai didi

PHP计算财政年度

转载 作者:行者123 更新时间:2023-12-04 02:17:46 25 4
gpt4 key购买 nike

我想使用 php 从 mysql 表中获取数据来计算财政年度。

要求是在每个财政年度(3 月 31 日至 4 月 1 日)计算学生分数。是否可以制作任何每年自行计算这些日期的函数?

我的学生考试成绩表正在存储考试日期(2012 年 9 月 2 日),它也有今年(2011 年 9 月 2 日)同一名学生的旧记录。我只想退出当年。直到现在我无法得到这个,这是我的代码:-

$result1 = mysql_query(
"SELECT SUM(score), SUM(score_from)
FROM school_test_report, school_students
WHERE (school_test_report.student_id = school_students.student_id and
school_test_report.class=school_students.class)
AND school_test_report.student_id='$id'
AND school_test_report.subject = 'maths'
/* something here to get dates school_test_report.test_date is between 31 march to 1 April */"
)
or die(mysql_error());
$row = mysql_fetch_assoc($result1);
echo $row['SUM(score)'].'/'. $row['SUM(score_from)'];

它给了我一个财政年度的所有结果。

最佳答案

在对日期执行计算时,最好扩展 DateTime类(class)。这样可以将所有日期计算封装在一个地方。随着时间的推移,您将建立一个非常有用的库。

要计算财政年度,您可以这样延长 DateTime:-

class MyDateTime extends DateTime
{
/**
* Calculates start and end date of fiscal year
* @param DateTime $dateToCheck A date withn the year to check
* @return array('start' => timestamp of start date ,'end' => timestamp of end date)
*/
public function fiscalYear()
{
$result = array();
$start = new DateTime();
$start->setTime(0, 0, 0);
$end = new DateTime();
$end->setTime(23, 59, 59);
$year = $this->format('Y');
$start->setDate($year, 4, 1);
if($start <= $this){
$end->setDate($year +1, 3, 31);
} else {
$start->setDate($year - 1, 4, 1);
$end->setDate($year, 3, 31);
}
$result['start'] = $start->getTimestamp();
$result['end'] = $end->getTimestamp();
return $result;
}
}

这将给出一个结果,您可以轻松地将其包含到您的查询中(如果可以,您真的应该将其更改为 mysqli 或 pdo)。

您可以像这样使用新功能:-

$mydate = new MyDateTime();    // will default to the current date time
$mydate->setDate(2011, 3, 31); //if you don't do this
$result = $mydate->fiscalYear();
var_dump(date(DATE_RFC3339, $result['start']));
var_dump(date(DATE_RFC3339, $result['end']));

如果您希望可以修改方法以将开始日期和结束日期作为 DateTime 对象返回:-

$result['start'] = $start;
$result['end'] = $end;
return $result;

然后您可以直接格式化以包含在您的查询中:-

$mydate = new MyDateTime();
$mydate->setDate(2011, 3, 31);
$result = $mydate->fiscalYear();
$start = $result['start']->format('Y M d');
$end = $result['end']->format('Y M d');

请参阅 date formats 的手册

关于PHP计算财政年度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com