用js计算周六所处单日双日数量

本文介绍了一个使用JavaScript解决的实际问题:如何计算2020年中周六是单日还是双日的次数。根据计算结果,2020年周六处于单日的工作天数为27天,双日为25天。通过源代码,读者可以学习到如何利用JavaScript进行日期操作和条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

夫人单位以前是每周六上午上班。

今年开始有所改变,具体方案是:周六若所处是单日,就周六全天上班,歇小礼拜;周六若所处是双日,就休息,休大礼拜。

用js计算一下一下2020年周六单日和双日数量,发现小礼拜和大礼拜不完全相同。

周六所处单日是27次,所处双日是25次。

Odd:27
even:25

源代码如下:  |

<script language="javascript">

    let date=new Date();

    //let year=date.getFullYear();

    let year=date.setFullYear(2020);

    let m_sequence,d_sequence,day,dayNum,result='';

    let date_value,Odd=0,even=0;

    for(m_sequence=1;m_sequence<=12;m_sequence++){

      switch(m_sequence){

        case 1:

        case 3:

        case 5:

        case 7:

        case 8:

        case 10:

        case 12:

          dayNum=31;

        break;

        case 4:

        case 6:

        case 9:

        case 11:

          dayNum=30;

          break;

        case 2:

          if((year%4==0 && year%100 !=0) ){

            dayNum=29;

          }else{

            dayNum=28;

          }

          break;

      }

      for(d_sequence=1;d_sequence<=dayNum;d_sequence++){

        date.setMonth(m_sequence-1,d_sequence);

        day=date.getDay();

        if(day==6){

          result+="周六"+date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+"<br/>";

          date_value=date.getDate();

          if (date_value%2 ==0){ //偶数

            even++;

          }else if(date_value %2==1 ){

            Odd++;

          }

          //result+=date.getDate()+"<br/>";

        }

      }

    }

    document.write('Odd:'+Odd+"<br/>");

    document.write('even:'+even+"<br/>");

    document.write(result);

    </script>

为缓解城市交通压力,武汉市交管局对于长江一桥及江汉一桥实行限行,规定如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 每日7时至22时,中型(含)以下载客汽车(新能源车除外)按车牌尾号分单双日通行(法定节假日、休息日除外),车牌尾号为英文字母的,按字母前最后一位阿拉伯数字对应日期的通行管理措施通行。出租车不受单双日限制通行。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 请根据输入的汽车牌号判断单双日通行。 编程要求 输入武汉市车牌号,本题中正确的数据形式为"鄂A-*****",8位长度。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 前3位为'鄂A-',后5位字符串由数字字符和大写字母字符(不包含大写O与I字母)组成,大写字母数量不超过两个,车牌号最后一位可能是数字字符或字母字符。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如'鄂A-FQ234'或'鄂A-1D23A'。 如果输入为正确的车牌号,则对应输出‘单号通行’或'双号通行'。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如果输入不正确,输出'Data Error!' 测试说明 平台会对你编写的代码进行测试: 测试输入: 鄂A-12345 预期输出: 单号通行 测试输入: 鄂A-5432W 预期输出: 双号通行 测试输入: 鄂A-2345 预期输出: Data Error! 开始你的任务吧,祝你成功!
最新发布
04-05
<think>好的,用户想实现一个程序来判断武汉车牌号的单双日限行情况。首先,我需要了解武汉的具体限行规则。根据引用[2],武汉可能和其他城市一样,根据车牌最后一位数字来判断单双号。不过,用户提供的引用中并没有明确提到武汉的具体规则,可能需要假设或查找更多信息。但用户可能希望基于现有参考中的通用方法,即最后一位阿拉伯数字的奇偶性。 接下来,需要考虑车牌号的格式。引用[1]提到车牌号长度为6位,可能包含字母和数字。例如,AD2367的最后一位数字是7,为单号。而A8888A的最后一位阿拉伯数字是8,双号。所以,程序需要从右往左查找最后一个数字字符,确定其奇偶。 用户提供的示例代码是Python,但引用中的代码有C语言和VB的例子。不过用户现在可能需要Python的实现。需要处理输入的车牌号,提取最后一位数字,判断奇偶,并结合当前日期来判断是否限行。 此外,还要考虑当前日期的单双号。例如,单日限行单号,双日限行双号。程序可能需要获取系统日期,或者让用户输入日期来判断。 可能的步骤: 1. 输入车牌号,验证长度是否为6位(根据引用[1])。 2. 从右向左遍历车牌号,找到第一个数字字符。 3. 判断该数字的奇偶。 4. 获取当前日期的单双号。 5. 比较两者,确定是否限行。 需要注意特殊情况,比如车牌号全是字母的情况,但根据引用[1],所有车牌号都含有数字,所以可以跳过验证。 然后,代码实现部分需要考虑如何遍历字符串,找到最后一个数字。例如,使用循环从后往前检查每个字符是否为数字,找到第一个即停止。然后转换为整数,判断奇偶。 关于日期处理,可以使用Python的datetime模块获取当天日期,然后判断是单日还是双日。例如,day = datetime.datetime.now().day,然后day % 2 == 0为双日。 综合这些步骤,编写代码结构大致如下: 获取车牌号输入,检查长度是否符合; 遍历车牌号,找到最后一个数字; 获取当前日期; 根据数字和日期的奇偶性输出结果。 测试案例需要考虑不同情况,比如最后字符是数字、中间有数字等。 可能的问题点:如果车牌号中没有数字?但根据引用[1],所有车牌号都含有数字,所以无需处理。但实际应用中可能需要验证,但用户问题中可能不需要,因为题目已假设车牌号符合条件。 最后,根据用户提供的引用,可能需要引用相关背景,比如引用[1]和[2]中的规则。</think>### 分步解决方案:武汉车牌单双号限行判断 #### 1. 理解需求与规则 武汉单双号限行规则基于以下逻辑: - **单日**:车牌尾号**奇数**禁止通行 - **双日**:车牌尾号**偶数**禁止通行 - **尾号定义**:车牌中**最后一位阿拉伯数字**决定单双号[^1] #### 2. 关键技术点 - **字符逆向遍历**:从右向左寻找第一个数字字符 - **日期获取**:判断当前日期的单双状态 - **逻辑判断**:比较车牌尾号与日期的奇偶性 #### 3. Python实现代码 ```python import datetime def check_vehicle_restriction(plate): # 验证车牌长度(武汉车牌为6位) if len(plate) != 6: return "无效车牌" # 逆向查找最后一位数字 last_digit = None for char in reversed(plate): if char.isdigit(): last_digit = int(char) break # 获取当天日期 today = datetime.datetime.now().day date_type = "双日" if today % 2 == 0 else "单日" # 判断限行状态 if (last_digit % 2 == 1 and today % 2 == 1) or \ (last_digit % 2 == 0 and today % 2 == 0): return f"今日{date_type},车牌尾号{last_digit},禁止通行" else: return f"今日{date_type},车牌尾号{last_digit},允许通行" # 测试案例 print(check_vehicle_restriction("鄂A6D3H7")) # 最后数字7 print(check_vehicle_restriction("鄂AW888Z")) # 最后数字8 print(check_vehicle_restriction("鄂A9B6C2")) # 最后数字2 ``` #### 4. 代码说明 1. **车牌验证**:确保输入为6位字符 2. **逆向遍历**:`reversed(plate)`从右向左扫描,找到第一个数字即停止 3. **日期判断**:`datetime`模块获取当前日号 4. **决策逻辑**:通过奇偶性比对实现四种情况判断 #### 5. 测试用例分析 | 输入示例 | 最后数字 | 当前日期 | 输出结果 | |----------|----------|----------|----------| | AD2367 | 7(奇数)| 15(单日)| 禁止通行 | | A8888A | 8(偶数)| 16(双日)| 禁止通行 | | A8963C | 3(奇数)| 16(双日)| 允许通行 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值