一、基础

分析:
1.已知条件:年、月、日。
2.把整月的天数和零散的天数加起来,就是今年过去的天数。
3.整月的天数只有在2月份有不同,闰年是29天,平年是28天。如果日期没有超过2月份则不会出现这个问题。
4.能被4整除并且不能被100整除的是闰年,能被400整除的是闰年。

<script>let year = parseInt(window.prompt("请输入年"));let month = parseInt(window.prompt("请输入月"));let day = parseInt(window.prompt("请输入日"));let num;if ((year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) && month > 2) {day++}switch (month) {case 1:num = day;break;case 2:num = 31 + day;break;case 3:num = 31 + 28 + day;break;case 4:num = 31 + 28 + 31 + day;break;case 5:num = 31 + 28 + 31 + 30 + day;break;case 6:num = 31 + 28 + 31 + 30 + 31 + day;break;case 7:num = 31 + 28 + 31 + 30 + 31 + 30 + day;break;case 8:num = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;break;case 9:num = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;break;case 10:num = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;break;case 11:num = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;break;case 12:num = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;}document.write("这是今年的第" + num + "天")
</script>

二、升级1

分析:
1.上段代码过多,主要集中在整月天数的累加上。
2.我们可以把数据放在数组里,根据月份去提取数据的个数。

<script>let year = parseInt(window.prompt("请输入年"));let month = parseInt(window.prompt("请输入月"));let day = parseInt(window.prompt("请输入日"));let monthData = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30];let num = 0;//月份从1开始,而数组下标从0开始,所以month-1for (let i = 0; i < month - 1; i++) {num = num + monthData[i]}if ((year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) && month > 2) {day++;}num += day;document.write("这是今年的第" + num + "天")
</script>

三、升级2

分析:
1.用户输入次数过多
2.输入: “2019-1-9”

<script>let date = prompt("请输入年月日,格式:“2020-1-1”").split('-');let year = parseInt(date[0]);let month = parseInt(date[1]);let day = parseInt(date[2]);let monthData = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30];let num = 0;for (let i = 0; i < month - 1; i++) {num = num + monthData[i]}if ((year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) && month > 2) {day++;}num += day;document.write("这是今年的第" + num + "天")
</script>

四、升级3

分析:
1.搞不懂啥是闰年。
2.记不住每个月有多少天。

    function dayOfYear(date) {let [year, month, day] = date.split("-");let day1 = new Date(year, 0, 0);let day2 = new Date(year, month - 1, day);return (day2 - day1) / (1000 * 60 * 60 * 24)}

上面这种写法有一点错误,但是却可以得到正确的值。
为什么这样说呢?
new Date() 可以接收2-7个参数:new Date(year,month,day,hours,minutes,seconds,ms)
其中:month(月份,介于0(1月)~11(12月)之间的一个整数)
day(月份中的第几天,介于1~31之间的一个整数。注意:这个参数使用1作为最小的值,而其他参数使用0作为最小的值。
问题就在这里,正确的写法应该是:

    function dayOfYear(date) {let [year, month, day] = date.split("-");let day1 = new Date(year, 0, 1);let day2 = new Date(year, month - 1, day);return (day2 - day1) / (1000 * 60 * 60 * 24) + 1}

或者直接省略

    function dayOfYear(date) {let [year, month, day] = date.split("-");let day1 = new Date(year, 0);let day2 = new Date(year, month - 1, day);return (day2 - day1) / (1000 * 60 * 60 * 24) + 1}

但这样写我们不得不在return的时候在尾部加1。

JS计算今年过了多少天相关推荐

  1. 100块钱买100只鸡php,使用JS计算买100只鸡问题

    这篇文章主要介绍了JS计算输出100元钱买100只鸡问题的解决方法,简单描述了100元钱买100只鸡问题并结合实例形式分析了问题解决的思路与具体实现方法,需要的朋友可以参考下 本文实例讲述了JS计算输 ...

  2. js计算数组中每个元素出现的次数(2种方法)

    js计算数组中每个元素出现的次数(2种方法) js动态生成唯一id Javascript生成全局唯一标识符(GUID,UUID)的方法

  3. JS计算两个日期时间差,天 小时 分 秒格式

    JS计算两个日期时间差,天 小时 分 秒格式 function getDateDiff(dateTimeStamp) {var minute = 1000 * 60;var hour = minute ...

  4. c语言100块钱买100只鸡算法,JS计算输出100元钱买100只鸡问题的解决方法

    JS计算输出100元钱买100只鸡问题的解决方法 本文实例讲述了JS计算输出100元钱买100只鸡问题的方法.分享给大家供大家参考,具体如下: 问题: 公鸡5元一只,母鸡3元一只,小鸡1元买三只,我现 ...

  5. 前端js计算抽奖概率

    很好用的js计算抽奖概率的公式 let weightList = [20, 8, 30, 50, 80, 10] // 权重数组 weightList = [...weightList, 0, 0] ...

  6. JS计算字符串在浏览器中显示的宽度

    js计算字符串宽度 大家可能会碰到这样一个需求:一个容器的宽度固定,当内容的宽度超过容器的宽度时鼠标移入显示提示框,不超过时则不显示. 这个时候就需要知道内容到底多宽. 怎么计算宽度 一 .估计法 假 ...

  7. JS 计算时间差(月份差、天数差)

    js 计算月份差 ,天数差 <SCRIPT language="javascript"> //计算月份差   function getMonthNumber(date1 ...

  8. js 计算精确度问题——基础积累

    js计算精确度问题--基础积累 最近在写一个后台管理系统时,遇到一个问题. 场景:输入三个值,计算三个值的和. 然后就遇到了上图中的js精确度的问题. 然后在浏览器控制台复现了.这个是js精确度的问题 ...

  9. html求正方形面积,利用js计算正方形的面积的方法介绍

    利用js计算正方形的面积的方法介绍 发布时间:2020-04-07 11:26:49 来源:亿速云 阅读:158 作者:小新 今天小编给大家分享的是利用js计算正方形的面积的方法介绍,很多人都不太了解 ...

  10. php输出圆周率100位,JS计算圆周率到小数点后100位实现步骤详解

    这次给大家带来JS计算圆周率到小数点后100位实现步骤详解,JS计算圆周率到小数点后100位的注意事项有哪些,下面就是实战案例,一起来看一下. 浮点数的有效数位是16位,我自己做了一个大数类,能存储1 ...

最新文章

  1. 周鸿祎重做路由器,到底在做什么?
  2. 桌面的html文件怎么打开方式,html文件怎么打开
  3. 快评 美国软件开发杂志的最新jolt大奖!
  4. 记mysqldump导出导入数据库的一个小问题~
  5. hdu 1700 (圆的内接三角形 要周长最大)
  6. c++经典书籍--提高C++性能的编程技术
  7. Stegsolve(Data Extract):lsb隐写
  8. 信号与系统郑君里上册pdf_信号与系统(上册)
  9. php中等腰金字塔挖空,php 用for循環做,金字塔,菱形,空三角
  10. 深度学习可以与大数据分手吗?
  11. Redis的超时命令和垃圾回收策略
  12. Java高级语法笔记-异常中finally的使用
  13. EasyUI numbox输入框,金额格式化显示
  14. 第二章 Cameras, Lights, and Shadows
  15. 知识分享:C语言语法总结,初学者可收藏
  16. zencart bohase 模板
  17. The import com. cannot be resolved
  18. 领导让谈入职公司的感受
  19. 多媒体-windows自带录音机录音中时间限制的解决方案
  20. rabbitmq 简易RPC调用示例

热门文章

  1. html能转换成axure,axure里面文件如何变成html
  2. 源代码与二进制文件SCA检测原理
  3. Linux 多线程多进程
  4. 条件变量----condition_variable
  5. 【Pytorch项目实战】之对抗攻击:无目标对抗攻击(FGSM)、有目标对抗攻击(FGSM)
  6. 帆软报表自定义提交以及单行提交
  7. Vista主题包(高仿真)_方舟系统站
  8. 打爆老板,用Python自动生成数据日报
  9. 项目管理(PMP)项目相关方管理
  10. ssh密钥的生成与使用