js对Date对象的操作的问题(生成一个倒数7天的数组)
今天在论坛上看到这样一个问题如下:
问题描述:
使用JavaScript生成一个倒数7天的数组。
比如今天是10月1号,生成的数组是["9月25号","9月26号","9月27号","9月28号","9月29号","9月30号","10月1号"]。
这个难点就是需要判断这个月份(可能还需要上一个月份)是30天还是31天,而且还有瑞年的2月28天或者29天。
解答思路:
方法一:
不需要那么复杂,在js
中非常简单,因为js
的date
对象是可以参与数学运算的!!!看下面的代码:
var now = new Date('2012/3/2 12:00:00'); // 这个算法能自动处理闰年和非闰年。2012年是闰年,所以2月有29号 var s = ''; var i = 0; while (i < 7) { s += now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate() + '\n'; now = new Date(now - 24 * 60 * 60 * 1000); // 这个是关键!!!减去一天的毫秒数效果就是把日期往前推一天 i++; } console.log(s);
结果如图:
如果需求不是指定某一天的时间,而是根据系统当前的时间,来计算也是可以的。
方法二:
根据当前系统时间,来计算这个倒数7天的数组:
var now = new Date(); // 这个算法能自动处理闰年和非闰年。2012年是闰年,所以2月有29号 var s = ''; var i = 0; while (i < 7) { s += now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate() + '\n'; now = new Date(now - 24 * 60 * 60 * 1000); // 这个是关键!!!减去一天的毫秒数效果就是把日期往前推一天 i++; } console.log(s);
结果如图所示:
写到这儿想起了js的日期格式化,详细了解点击此处javascript Date format。
方法三:
当然还有一种方法就是用Date 的 setDate()方法
var today = new Date(); var dates = [today]; for (var i = 1; i < 7; i++) { var d = new Date(today); d.setDate(d.getDate() - i); dates.unshift(d); } console.log(dates);
结果如图:
注:
setDate() 方法用于设置一个月的某一天。
getDate() 方法可返回月份的某一天。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
js对Date对象的操作的问题(生成一个倒数7天的数组)的更多相关文章
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- js时间Date对象介绍及解决getTime转换为8点的问题
前言 在做时间转换的时候,发现用“2016-04-12”转出来的时间戳是 2016-04-12 08:00的时间点,而不是0点. new Date('2016-04-12').getTime(); ) ...
- JavaScript基础17——js的Date对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS的Date对象、Math、包装类
Date对象 在JS使用Date对象来表示时间 当前时间 var d = new Date(); 指定时间 格式:月/日/年 时:分:秒 var e = new Date("02/16/ ...
- js实现小时钟,js中Date对象的使用?
介绍一下js中Date对象的使用 dateObj = new Date() dateObj = new Date(dateValue) dateObj = new Date(year,month,da ...
- JS 的Date对象
原文 http://www.cnblogs.com/towerking/p/3220410.html 一.获取Date对象 在JS中我们可以通过下面一段代码获取本地时间 var currentDate ...
- js日期date对象
js日期 日期对象的一些属性和方法 var date = new Date() date.toString() // "Tue Jan 29 2019 22:58:13 GMT+0800 ( ...
- JS中Date对象getYear()方法和getFullYear()方法区别
释义 JavaScript getFullYear() 方法 getFullYear() 方法可返回一个表示年份的 4 位数字. getYear() 语法 dateObject.getFullYear ...
- javascript得知 - js的Date对象函数
js的Date功能很强大.通常使用. 首先获得当前的日期: var CurDate = new Date(); var Year = CurDate.getFullYear(); //年份(四位 例: ...
随机推荐
- HDU 1028(母函数)
Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.QHand In HandOnline ...
- 用EF6更新数据库时出现外键错误解决方式
在“Package Manager Console”中执行update-database命令,出现异常信息: Introducing FOREIGN KEY constraint 'FK_dbo.Pr ...
- ASP.NET WebAPI 10 Action的选择(二)
在本系列的第二篇简要的讲述了Action的选择条件本篇深入讲述一下Action选择的过程在上一篇中我们已经讲到了Controller的激活过程中已经说到了设置Controller的Controller ...
- gulp入坑系列(3)——创建多个gulp.task
继续gulp的爬坑路,在准备get更多gulp的具体操作之前,先来明确一下在gulp中创建和使用多个task任务的情况. gulp所要做的操作都写在gulp.task()中,系统有一个默认的defau ...
- gridView使用
只读 for (int i = 0; i <9; i++) { this.gridView1.Columns[i].OptionsColumn.ReadOnly = true; } 不显示面板 ...
- android 读中文文本文件
AndroidManifest.xml中 加入: <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="and ...
- 实战3--应用EL表达式判断用户登录信息
1.判断用户名是否为空,空则显示提示信息 (1)编写index.jsp页面 <%@ page language="java" contentType="text/h ...
- iOS UI 之UILable
@interface ViewController : UIViewController @property (strong,nonatomic) UILabel *aLable; @property ...
- XMind快捷键
XMind 是一款非常实用的思维导图软件,可以画各种结构图鱼骨图.二维图.树形图.逻辑图.组织结构图等!下面是常用的快捷键统计! 快捷鍵(Windows) 快捷鍵(Mac) 描述 Ctrl+N Com ...
- mysql 批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = ...