gpt4 book ai didi

javascript - (javascript 或/和 datejs)尝试计算两个日期间隔的总工资。当开始日期和结束日期包含月份的某些小数天时

转载 作者:行者123 更新时间:2023-11-28 06:14:12 27 4
gpt4 key购买 nike

****工资类型每月。****

var getDiffDatesSalary = function days_between(date1,date2, monthlyBasic) {
var dateObj1 = new Date(date1);
var month1 = dateObj1.getMonth(); //months from 1-12
var day1 = dateObj1.getDate();
var year1 = dateObj1.getFullYear();
var daysInMonth1 = Date.getDaysInMonth(year1, month1);

var dateObj2 = new Date(date2);
var month2 = dateObj2.getMonth(); //months from 0-11
var day2 = dateObj2.getDate();// days from 1
var year2 = dateObj2.getFullYear();
var daysInMonth2 = Date.getDaysInMonth(year2, month2);

var date1FractionDays = daysInMonth1 - day1;
var date2FractionDays = daysInMonth2 - day2;
var newDate1, newDate2;
if(day1 > 1){
var perDaySalary1 = monthlyBasic / daysInMonth1;
var thisMonthFarctionDaysSalaryForDate1 = perDaySalary1 * date1FractionDays;
month1 += 1; // after calculate fraction this month basic, round month from next
newDate1 = new Date(year1,month1);
}
if(day2 !== daysInMonth2){
var perDaySalary2 = monthlyBasic / daysInMonth2;
var thisMonthFarctionDaysSalaryForDate2 = perDaySalary2 * day2;
month2 -= 1; //after calculate fraction this month basic, round month from previous
newDate2 = new Date(year2,month2);
}

// i want to calculate totalSalaryamount of date ranges
// var totalFractionDaysSalary = thisMonthFarctionDaysSalaryForDate1 + thisMonthFarctionDaysSalaryForDate2;
// var totalMonthsSalay = roundMonths * monthlyBasic;
// var totalSalaryamount = totalFractionDaysSalary + totalMonthsSalay;

};

**

结果 = thisMonthFarctionDaysSalaryForDate1 + thisMonthFarctionDaysSalaryForDate2 + (roundMonths * MonthBasic)

结果将是 getDiffDatesSalary("2016/01/15","2016/03/25", 1000);

516.13+806.45 + 1000//总计:2322.58

或/和 getDiffDatesSalary("2015/01/15","2016/03/25", 1000) ;

516.13+806.45 + (1000 * 13)//总计:14322.58

或/和 getDiffDatesSalary("2016/01/01","2016/02/29", 1000);

1000* 2//2000

**

最佳答案

我建议将任务分成两部分:

  1. 获取总天数
  2. 计算工资。

该提案使用年、月和日之间的差值,如果日差为负数,则进行修正。同一天意味着一天。

function getDays(date1, date2) {
var date1Obj = new Date(date1),
date2Obj = new Date(date2),
totalYear = date2Obj.getFullYear() - date1Obj.getFullYear(),
totalMonth = date2Obj.getMonth() - date1Obj.getMonth(),
totalDay = date2Obj.getDate() - date1Obj.getDate() + 1;

if (totalDay < 0) {
totalMonth--;
totalDay += new Date(date1Obj.getFullYear(), date1Obj.getMonth(), 0).getDate();
}

return 360 * totalYear + 30 * totalMonth + totalDay;
}

function getDiffDatesSalary(date1, date2, salaryPerMonth) {
return getDays(date1, date2) * salaryPerMonth / 30;
}

document.write(getDiffDatesSalary("2016/01/15", "2016/03/25", 1000) + '<br>');
document.write(getDiffDatesSalary("2016/01/31", "2016/02/15", 1000) + '<br>');
document.write(getDiffDatesSalary("2016/03/20", "2016/03/20", 3000) + '<br>');

关于javascript - (javascript 或/和 datejs)尝试计算两个日期间隔的总工资。当开始日期和结束日期包含月份的某些小数天时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111665/

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