如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?相关的知识,希望对你有一定的参考价值。
我是用来计算工人的工资,满月(其中有30天的和31天的)就按足月发放,做了几个月后余下的几天就既要算有几个月也要计算余下的天数,余下的天数就按天发钱。
例如:工人2012年3月5日开始上班,2012年6月15日离开,要算出他从开始上班到离开时有3个月零10天,这3个月里又包含了3、5月是按31天算一个月,4月按30天算一个月,(就是按自然月计算),然后余下10天数就按10*足月工资/30计算。我知道EXCL里面有个函数DATEDIF(日期1,日期2,"M")能实现计算月数,DATEDIF(日期1,日期2,"MD")算出除月数后余下的天数。
给工人工资当然是一月一发。但是我需要计算所有工人的工资以便以后做结算用。
参考技术B 听不太懂,你说的啥。。顺口溜吗? 参考技术C 做了几个月后 是什么意思啊?追问例如:工人2012年3月5日开始上班,2012年6月15日离开,要算出他从开始上班到离开时有3个月零10天,这3个月里又包含了3、5月是按31天算一个月,4月按30天算一个月,(就是按自然月计算),然后余下10天数就按10*足月工资/30计算。
我知道EXCL里面有个函数DATEDIF(日期1,日期2,"M")能实现计算月数,DATEDIF(日期1,日期2,"MD")算出除月数后余下的天数。
mysql中也有这个函数啊,你可以用它生成一个视图 通过视图获取需要的月份个数 天数
追问要用什么函数呀?应该如何做能详细点吗?我才接触php,对MySQL更不熟悉!
来自:求助得到的回答 参考技术C 这个很麻烦的JS通过一个值与日期比较计算天数
现有一个数据框,输入的是数值如1,2,3....12,即是多少个月,设为Y
还有一个是日期如2010-01-01类型的值,设为R
现要通过R中的月份与Y相加得出一个新的日期,这个日期再与当前日期相比较
,当然要考虑如果输入的日期R为2009-11-01,数值Y为6的情况
请问如何用JS来判断?
<!--
function deal()
//var Y = 6;
//var R ="2009-11-01";
var R = document.getElementById('date').value +'';
var Y = document.getElementById('month').value;
alert(R);
var year=R.substr(0,4);
var month=R.substr(5,2);
var day=R.substr(8,2);
if((parseInt(month)+parseInt(Y)) > 12)
year++;
month = parseInt(month) + parseInt(Y) - 12;
else
month = parseInt(month) + parseInt(Y);
alert(year+"-"+month+"-"+day);
R = new Date(year,month,day,00,00,00);
dateNow = new Date();
var diff = R.getTime() - dateNow.getTime()
var days = Math.floor(diff/(1000*60*60*24));
var str = "与今天相差" + days + "天"
if(R > dateNow)
alert("大于今天!"+"\n"+str);
else
alert("小于今天!"+"\n"+str);
//-->
</SCRIPT>
月<input type="text" id="month" value="6">
日期 <input type="text" id="date" value="2009-11-01">
<input type="button" value="submit" onClick="deal()">
这样的吗 参考技术A 1.把开始时间和结束时间保存
var dateFrom = new Date(strFrom);
var dateTo = new Date(strTo);
2.计算时间差
var diff = dateTo.valueOf() - dateFrom.valueOf();
3.时间差转换为天数
var diff_day = parseInt(diff/(1000*60*60*24)); 参考技术B 根据一楼帮你改的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body><script>
function deal()
var date = document.getElementById('date').value;
var month = document.getElementById('month').value;
var tmp = date.split('-');
var add = parseInt(month) + parseInt(tmp[1]);
if ( add > 12 )
tmp[0] = parseInt(tmp[0]) + 1;
tmp[1] = add%12;
var time = new Date(tmp[0],tmp[1],1);
var today = new Date();
var diff = time.getTime() - today.getTime()
var days = Math.floor(diff/(1000*60*60*24));
var str = "与今天相差" + days + "天" ;
alert(str);
</script>
月<input type="text" id="month" value="6">
日期 <input type="text" id="date" value="2009-11-1">
<input type="button" value="submit" onClick="deal()">
</body>
</html> 参考技术C 简单写了下,不知道是不是你的意思
<script>
function deal()
var date = document.getElementById('date').value;
var month = document.getElementById('month').value;
var tmp = date.split('-');
var add = parseInt(month) + parseInt(tmp[1]);
if ( add > 12 )
tmp[0] = parseInt(tmp[0]) + 1;
tmp[1] = add%12;
alert(tmp.join('-'));
</script>
月<input type="text" id="month" value="6">
日期 <input type="text" id="date" value="2009-11-1">
<input type="button" value="submit" onClick="deal()">
以上是关于如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?的主要内容,如果未能解决你的问题,请参考以下文章