gpt4 book ai didi

javascript - 如何识别日期是否在 10 月 1 日至 5 月 31 日之间,而与 Javascript 中的年份无关

转载 作者:行者123 更新时间:2023-12-04 11:43:31 26 4
gpt4 key购买 nike

所以我正在开发一个 JavaScript 应用程序,我需要计算每月消耗的公用事业费用。水电费有不同的费率

  • 冬季费率(6 月 1 日至 9 月 30 日)-> 更高费率
  • 夏季价格(10 月 1 日 - 5 月 31 日)

  • 因此,当我需要计算月份的账单时,可以说:4 月 25 日 - 5 月 22 日,那么这需要确定为夏季。
    所以我需要计算账单日期是在夏季还是冬季。
    我正在尝试做一些以下形式的事情,但这是代码中的很多杂耍。
    我如何计算给定日期是否介于 之间十月 - 五月(夏季)或在 之间六月 - 九月(冬季)
    注意 - 我需要忽略年份
    if (
    dateFrom.getMonth() >= vendorSummerStartDate.getMonth() &&
    dateFrom.getDate() >= vendorSummerStartDate.getDate() &&
    dateTo.getMonth() <= vendorSummerEndDate.getMonth() &&
    dateTo.getDate() <= vendorSummerEndDate.getDate()
    ) { /*... */ }

    最佳答案

    当开始月份可能比结束月份更大时,这看起来很棘手。我们可以对此进行抽象,并将所涉及的值(开始、结束、值)视为任何整数(不一定是月份):

  • 通过检查 value - start 来检查给定值是否位于开始值和结束值之间或之间。和 value - end有一个不同的符号,或者更准确地说,这些项的乘积要么是 0,要么是负数。如果为 0,那么我们可以得出结论,该值与起始值或结束值一致,因此在范围内。
  • 否则检查起始值是否小于结束值
  • 如果上述两个 bool 表达式相等(真 - 真或假 - 假),那么我们可以断定该值在范围内。

  • 执行:

    function isInRange (start, end, val) {
    let sign = (val - start) * (val - end);
    return !sign || (sign < 0) == (start < end);
    }

    // Wrapper around above function, converting dates to months
    const monthIsInRange = (...args) => isInRange(...args.map(dt => dt.getMonth()));

    // A few tests:
    console.log(monthIsInRange(new Date("2019-06-01"), new Date("2019-09-30"),
    new Date("2021-07-15"))); // true
    console.log(monthIsInRange(new Date("2019-06-01"), new Date("2019-09-30"),
    new Date("2021-05-15"))); // false
    console.log(monthIsInRange(new Date("2019-10-01"), new Date("2020-05-31"),
    new Date("2021-07-15"))); // false
    console.log(monthIsInRange(new Date("2019-10-01"), new Date("2020-05-31"),
    new Date("2021-05-15"))); // true

    关于javascript - 如何识别日期是否在 10 月 1 日至 5 月 31 日之间,而与 Javascript 中的年份无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68878732/

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