如何在JavaScript中获取当前日期?
当前回答
不需要图书馆,并且考虑了时区。
因为有时您需要在服务器上进行计算。这可以是独立于服务器时区的。
常量currentTimezoneOffset=8;//UTC+8:00时区,更改Date.prototype.yyyymmdd=函数(){返回[this.getFullYear(),(this.getMonth()+1).toString().padStart(2,“0”),//getMonththis.getDate().toString().padStart(2,“0”)].连接('-');};函数getTodayDateStr(){const d=新日期();//console.log(d);const d2=新日期(d.getTime()+(d.getTimezoneOffset()+currentTimezoneOffset*60)*60*1000);//console.log(d2,d2.yyyymmdd());返回d2.yyyymmdd();}console.log(getTodayDateStr());
其他回答
最新编辑:2019年8月23日date fns库的工作方式与moment.js非常相似,但占用空间要小得多。它可以让您快速选择要包含在项目中的函数,这样您就不必编译整个库来格式化今天的日期。如果您的项目不能选择最小的第三方库,我支持塞缪尔·梅多斯(Samuel Meddows)的公认解决方案。
保存下面的历史,因为它帮助了一些人。但从记录上看,它相当粗糙,很容易在没有警告的情况下被打破,这篇文章中的大多数解决方案也是如此
编辑2017年7月2日单行JS解决方案:
tl;博士var todaysDate=新日期(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i)?new Date(Date.now()).toLocaleString().split(“”)[0].splite(',')[0]:新日期(Date.nnow()).ToLocaleSstring().spit(“')[1]+“”+新日期(Date.now(”).toLocal eString).splite“”)[2]+“”+new日期(Date:now().toLocaleString;edge,ff最新,&chrome返回todaysDate=“2/7/2017”“works”*在IE10中+
解释
我发现IE10和IE Edge的做法有点不同。。想想看吧以new Date(Date.now()).toLocaleString()作为输入,
IE10返回:
"Tuesday, February 07, 2017 2:58:25 PM"
我可以写一个大的长函数和FTFY。但你真的应该用moment.js来做这些。我的脚本只是清理了这一点,并为您提供了扩展的传统美国符号:>todaysDate=“2017年3月6日”
IE EDGE返回:
"2/7/2017 2:59:27 PM"
当然,这不可能那么容易。Edge的日期字符串在每个可见字符串之间都有不可见的“•”字符。因此,我们现在不仅要检查第一个字符是否是数字,还要检查前3个字符,因为事实证明,整个日期范围内的任何一个字符最终都会在某个点上是点或斜线。所以为了保持简单,只需.slice()开头的三个字符(针对未来恶作剧的小缓冲区),然后检查数字。应该注意的是,这些不可见的点可能会在代码中持续存在。如果你有更大的计划,而不仅仅是将这个字符串打印到你的视图中,我可能会深入研究。
⑪更新了一个衬垫:
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
读起来很糟糕。怎么样:
var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
原始答案
我给你准备了一个单行本:
new Date(Date.now()).toLocaleString().split(', ')[0];
[1]会给你一天的时间。
new Date().toISOString().slice(0,10);
也会起作用
这有什么大不了的。。最干净的方法是
var currentDate=新日期().toLocaleString().slice(0,10);
var date = new Date().toLocaleDateString("en-US");
此外,您可以使用两个参数调用方法toLocaleDateString:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
有关MDN上此方法的详细信息。
这是我目前最喜欢的,因为它既灵活又模块化。它是(至少)三个简单函数的集合:
/**
* Returns an array with date / time information
* Starts with year at index 0 up to index 6 for milliseconds
*
* @param {Date} date date object. If falsy, will take current time.
* @returns {[]}
*/
getDateArray = function(date) {
date = date || new Date();
return [
date.getFullYear(),
exports.pad(date.getMonth()+1, 2),
exports.pad(date.getDate(), 2),
exports.pad(date.getHours(), 2),
exports.pad(date.getMinutes(), 2),
exports.pad(date.getSeconds(), 2),
exports.pad(date.getMilliseconds(), 2)
];
};
下面是pad函数:
/**
* Pad a number with n digits
*
* @param {number} number number to pad
* @param {number} digits number of total digits
* @returns {string}
*/
exports.pad = function pad(number, digits) {
return new Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
};
最后,我可以手动创建日期字符串,也可以使用一个简单的函数来实现:
/**
* Returns nicely formatted date-time
* @example 2015-02-10 16:01:12
*
* @param {object} date
* @returns {string}
*/
exports.niceDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + ' ' + d[3] + ':' + d[4] + ':' + d[5];
};
/**
* Returns a formatted date-time, optimized for machines
* @example 2015-02-10_16-00-08
*
* @param {object} date
* @returns {string}
*/
exports.roboDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + '_' + d[3] + '-' + d[4] + '-' + d[5];
};
推荐文章
- 我如何检查如果一个变量是JavaScript字符串?
- 如何检测如果多个键被按下一次使用JavaScript?
- MySQL中两个日期之间的差异
- 如何通过history. pushstate获得历史变化的通知?
- 在Bash中获取日期(比当前时间早一天)
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 我怎么能计算在打字稿2日期之间的时间