想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。
如何在 JavaScript 中获取当前日期?
var currentTime = new Date();
new Date()
返回当前 时间,而不是当前 日期。如果您试图将它与另一个没有时间成分的日期(即在午夜)进行比较,则区别很重要。
使用 new Date()
生成包含当前日期和时间的新 Date
对象。
var 今天 = 新日期(); var dd = String(today.getDate()).padStart(2, '0'); var mm = String(today.getMonth() + 1).padStart(2, '0'); //一月是0! var yyyy = today.getFullYear();今天 = mm + '/' + dd + '/' + yyyy; document.write(今天);
这将以 mm/dd/yyyy 格式为您提供今天的日期。
只需将 today = mm +'/'+ dd +'/'+ yyyy;
更改为您希望的任何格式。
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/'); document.write(UTC);
如果您要重复使用 utc
变量(例如 new Date(utc)
),请使用 replace
选项,因为 Firefox 和 Safari 无法识别带有破折号的日期。
toUTCString()
作为 UTC 日期时间返回。
moment( new Date().toJSON().slice(0, 10) )
最短的可能。
要获得像“2018-08-03”这样的格式:
让今天 = new Date().toISOString().slice(0, 10) console.log(today)
要获得像“8/3/2018”这样的格式:
让今天 = new Date().toLocaleDateString() console.log(today)
此外,您可以将 locale 作为参数传递,例如 toLocaleDateString("sr")
等。
已更新!,向下滚动
如果您想要对最终用户来说简单漂亮的东西...... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.
var objToday = new Date(), weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), dayOfWeek = weekday[objToday.getDay( )], domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1));返回 1 == 一个? “st”:2 == 一个? “nd”:3 == 一个? "rd" : "th" }(), dayOfMonth = today + (objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder, 月 = new Array('一月', '二月', '三月', '四月', '五月', '六月', '七月','八月','九月','十月','十一月','十二月'),curMonth = 月[objToday.getMonth()],curYear = objToday.getFullYear(),curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()), curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(), curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(), curMeridiem = objToday.getHours() > 12 ? “下午”:“上午”; var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear; document.getElementsByTagName('h1')[0].textContent = 今天;
UBBER 更新经过长时间的拖延,我终于在 GitHubbed 上更新了这个,并用我自己使用的最终解决方案进行了更新。它甚至在最后一刻进行了一些编辑以使其更甜美!如果您正在寻找旧的 jsFiddle,请查看此内容。
此更新有 2 种风格,虽然没有我上面的原始答案那么小,但仍然相对较小。如果你想要非常小,那就去吧。
另请注意:这仍然没有 moment.js 臃肿。虽然 moment.js 很好,但 imo,它有太多世俗的方法,需要像学习语言一样学习 moment。我这里使用与 PHP: date 相同的通用格式。
快速链接
Date.format.min.js 5.08 KB
dateFormat.min.js 4.16 KB
风味 1 new Date().format(String) 我个人的最爱。我知道禁忌,但在日期对象上效果很好。请注意您对日期对象可能拥有的任何其他模块。
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Flavor 2 dateFormat(Date, String) 更传统的多合一方法。具有前一个的所有能力,但通过带有 Date 参数的方法调用。
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Flavor (需要 jQuery) $.date(Date, String) 这不仅仅是一个简单的格式选项。它扩展了基本的 Date 对象并包括诸如 addDays 之类的方法。有关更多信息,请参阅 Git。
在这个 mod 中,格式字符的灵感来自 PHP: date。如需完整列表,请参阅我的README
这个模组还有更长的预制格式列表。要使用预制格式,只需输入其键名。 dateFormat(new Date(), 'pretty-a');
'compound' 'commonLogFormat' == 'd/M/Y:G:i:s' 'exif' == 'Y:m:d G:i:s' 'isoYearWeek' == 'Y\\WW' ' isoYearWeek2' == 'Y-\\WW' 'isoYearWeekDay' == 'Y\\WWj' 'isoYearWeekDay2' == 'Y-\\WW-j' 'mySQL' == 'Ymd h:i:s' ' postgreSQL' == 'Yz' 'postgreSQL2' == 'Yz' 'soap' == 'Ymd\\TH:i:su' 'soap2' == 'Ymd\\TH:i:s.uP' 'unixTimestamp' == '@U' 'xmlrpc' == 'Ymd\\TG:i:s' 'xmlrpcCompact' == 'Ymd\\tGis' 'wddx' == 'Ynj\\TG:i:s'
'commonLogFormat' == 'd/M/Y:G:i:s'
'exif' == 'Y:m:d G:i:s'
'isoYearWeek' == 'Y\\WW'
'isoYearWeek2' == 'Y-\\WW'
'isoYearWeekDay' == 'Y\\WWj'
'isoYearWeekDay2' == 'Y-\\WW-j'
'mySQL' == 'Ymd h:i:s'
'postgreSQL' == 'Yz'
'postgreSQL2' == 'Yz'
'肥皂' == 'Ymd\\TH:i:su'
'soap2' == 'Ymd\\TH:i:s.uP'
'unixTimestamp' == '@U'
'xmlrpc' == 'Ymd\\TG:i:s'
'xmlrpcCompact' == 'Ymd\\tGis'
'wddx' == 'Ynj\\TG:i:s'
'常量' 'AMERICAN' == 'F j Y' 'AMERICANSHORT' == 'm/d/Y' 'AMERICANSHORTWTIME' == 'm/d/Y h:i:sA' 'ATOM' == 'Ymd\ \TH:i:sP' 'COOKIE' == 'l dMY H:i:s T' 'EUROPEAN' == 'j F Y' 'EUROPEANSHORT' == 'dmY' 'EUROPEANSHORTWTIME' == 'dmY H:i: s' 'ISO8601' == 'Ymd\\TH:i:sO' 'LEGAL' == 'j F Y' 'RFC822' == 'D d M y H:i:s O' 'RFC850' == 'l dMy H:i:s T' 'RFC1036' == 'D d M y H:i:s O' 'RFC1123' == 'D d MYH:i:s O' 'RFC2822' == 'D d MYH: i:s O' 'RFC3339' == 'Ymd\\TH:i:sP' 'RSS' == 'D d MYH:i:s O' 'W3C' == 'Ymd\\TH:i:sP'
'美国' == 'F j Y'
'AMERICANSHORT' == 'm/d/Y'
'AMERICANSHORTWTIME' == 'm/d/Y h:i:sA'
'原子' == 'Ymd\\TH:i:sP'
'COOKIE' == 'l dMY H:i:s T'
'欧洲' == 'j F Y'
'EUROPEANSHORT' == 'dmY'
'EUROPEANSHORTWTIME' == 'dmY H:i:s'
'ISO8601' == 'Ymd\\TH:i:sO'
'合法' == 'j F Y'
'RFC822' == 'D d M y H:i:s O'
'RFC850' == 'l dMy H:i:s T'
'RFC1036' == 'D d M y H:i:s O'
'RFC1123' == 'D d MYH:i:s O'
'RFC2822' == 'D d MYH:i:s O'
'RFC3339' == 'Ymd\\TH:i:sP'
'RSS' == 'D d MYH:i:s O'
'W3C' == 'Ymd\\TH:i:sP'
'漂亮' '漂亮-a' == 'g:i.sA l jS \\o\\f F Y' '漂亮-b' == 'g:iA l jS \\o\\f F Y' '漂亮- c' == 'n/d/Y g:iA' 'pretty-d' == 'n/d/Y' 'pretty-e' == 'F jS - g:ia' 'pretty-f' == 'g:iA'
'漂亮-a' == 'g:i.sA l jS \\o\\f F Y'
'漂亮-b' == 'g:iA l jS \\o\\f F Y'
'漂亮-c' == 'n/d/Y g:iA'
'漂亮-d' == 'n/d/Y'
'漂亮-e' == 'F jS - g:ia'
'漂亮-f' == 'g:iA'
您可能注意到,您可以使用双 \
来转义字符。
如果您只想要一个没有时间信息的日期,请使用:
var 今天 = 新日期();今天.setHours(0, 0, 0, 0); document.write(今天);
尝试这个:
var currentDate = new Date() var day = currentDate.getDate() var month = currentDate.getMonth() + 1 var year = currentDate.getFullYear() document.write("" + day + "/" + month + "/" + 年份 + "")
结果会像
15/2/2012
如果您正在寻找对日期格式更精细的控制,我强烈建议您查看 momentjs。很棒的图书馆——而且只有 5KB。 http://momentjs.com/
您可以使用 moment.js:http://momentjs.com/
var m = moment().format("DD/MM/YYYY"); document.write(m);
moment().format("L")
以尊重当前语言环境。
var date = new Date().toLocaleDateString("en-US");
此外,您可以使用两个参数调用方法 toLocaleDateString
:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
MDN 上有关此方法的更多信息。
new Date().toLocaleDateString("de-de")
对我有用。
var d = (new Date()).toString().split(' ').splice(1,3).join(' '); document.write(d)
将其分解为步骤:
(new Date()).toString() 给出 "Fri Jun 28 2013 15:30:18 GMT-0700 (PDT)" (new Date()).toString().split(' ') 将上述字符串划分为每个空格并返回如下数组:["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)"] (new Date() ).toString().split(' ').splice(1,3).join(' ') 从上面的数组中取出第二个、第三个和第四个值,用空格将它们连接起来,返回一个字符串“Jun 28 2013 "
Date().split(' ').splice(1,3).join(' ')
这每次都有效:
var now = new Date(); var day = ("0" + now.getDate()).slice(-2); var month = ("0" + (now.getMonth() + 1)).slice(-2); var today = now.getFullYear() + "-" + (month) + "-" + (day); console.log(今天);
更干净,更简单的版本:
new Date().toLocaleString();
结果因用户的语言环境而异:
2017 年 2 月 27 日上午 9:15:41
大多数其他答案都是提供日期和时间。如果你只需要日期。
new Date().toISOString().split("T")[0]
输出
[ '2021-02-08', '06:07:44.629Z' ]
如果您希望它采用 /
格式,请使用 replaceAll
。
new Date().toISOString().split("T")[0].replaceAll("-", "/")
如果您想要其他格式,那么最好使用 momentjs
。
如果您对 YYYY-MM-DD 格式感到满意,这也可以完成这项工作。
new Date().toISOString().split('T')[0]
2018-03-10
您可以使用扩展 Date 对象的 Date.js 库,因此您可以拥有 .today() 方法。
您现在可以像这样调用静态方法来获取当前日期:
var now = Date.now()
参考:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
var dtToday = new Date(date.now);
Varun's answer 不考虑 TimezoneOffset。这是一个版本:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
TimezoneOffset
是分钟,而 Date 构造函数需要毫秒,因此乘以 60000
。
使用内置的 JS Date.prototype.toLocaleDateString()
(更多选项在这里 MDN docs):
const options = { 月:'2-digit',day:'2-digit',year:'numeric',}; console.log(new Date().toLocaleDateString('en-US', options)); // mm/dd/yyyy
更新:我们可以使用具有不错 browser support 的 Intl.DateTimeFormat
获得类似的行为。与 toLocaleDateString()
类似,我们可以使用 options 传递一个对象:
const date = new Date('Dec 2, 2021') // Thu Dec 16 2021 15:49:39 GMT-0600
const options = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
}
new Intl.DateTimeFormat('en-US', options).format(date) // '12/02/2021'
最短的答案是:new Date().toJSON().slice(0,10)
因为 toISOString()
只会返回当前的 UTC 时间,而不是本地时间。我们必须使用 '.toString()' 函数来创建日期,以获取 yyyy-MM-dd
格式的日期,例如
document.write(new Date(new Date().toString().split('GMT')[0]+'UTC').toISOString().split('T')[0]);
以 yyyy-MM-ddTHH:mm:ss
格式输入日期和时间
document.write(new Date(new Date().toString().split('GMT')[0]+'UTC').toISOString().split('.')[0]);
以 yyyy-MM-dd HH:mm:ss
格式输入日期和时间
document.write(new Date(new Date().toString().split('GMT')[0]+'UTC').toISOString().split('.')[0].replace('T' ,''));
new Date().toDateString();
结果:
“2016 年 2 月 3 日星期三”
new Date().toISOString().slice(0,10);
也可以
如果您想要一个简单的 DD/MM/YYYY
格式,我刚刚提出了这个简单的解决方案,尽管它没有前缀缺失的零。
var d = 新日期(); document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
尝试
`${Date()}`.slice(4,15)
console.log(`${Date()}`.slice(4,15))
我们在这里使用标准 JS 功能:template literals、Date object(转换为字符串)和 slice。这可能是满足 OP 要求的最短解决方案(没有时间,只有日期)
最新编辑:2019 年 8 月 23 日 date-fns 库的工作方式与 moment.js 非常相似,但占用空间要小得多。它使您可以挑选要包含在项目中的函数,这样您就不必编译整个库来格式化今天的日期。如果您的项目不能选择最小的 3rd 方库,我赞同 Samuel Meddows 接受的解决方案。
保留下面的历史,因为它帮助了一些人。但是为了记录,它非常hacky并且很容易在没有警告的情况下打破,就像这篇文章中的大多数解决方案一样
编辑 2/7/2017 单行 JS 解决方案:
tl;dr 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]; edge, ff latest, & chrome return todaysDate = "2/7/2017" "works"* in IE10+
解释
我发现 IE10 和 IE Edge 做的事情有点不同.. 去看看。以 new Date(Date.now()).toLocaleString()
作为输入,
IE10 返回:
"Tuesday, February 07, 2017 2:58:25 PM"
我可以写一个很长的函数和 FTFY。但是你真的应该使用 moment.js 来处理这些东西。我的脚本只是清理了它并为你提供了扩展传统的美国符号:> todaysDate = "March 06, 2017"
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]
将为您提供一天中的时间。
你可以签出这个
var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);
并查看 Date() 构造函数的文档。 link
Get Current Date Month Year in React js
你可以用这个
<script>
function my_curr_date() {
var currentDate = new Date()
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var my_date = month+"-"+day+"-"+year;
document.getElementById("dateField").value=my_date;
}
</script>
HTML是
<body onload='return my_curr_date();'>
<input type='text' name='dateField' id='dateField' value='' />
</body>
实现这一目标的一种直接方法(同时考虑到您当前的时区,它利用 ISO yyyy-mm-dd 格式)是:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
通常,这是一种非常通用的兼容日期格式,如果需要,您可以将其转换为纯日期值:
Date.parse(d); // 1582044297000
如果在“当前日期”之前您正在考虑“今天”,那么这个技巧可能对您有用:
> new Date(3600000*Math.floor(Date.now()/3600000))
2020-05-07T07:00:00.000Z
这样,您将获得今天的 Date 实例,时间为 0:00:00。
操作原理很简单:我们取当前时间戳,除以 1 天,以毫秒表示。我们会得到一小部分。通过使用 Math.floor,我们去掉了分数,所以我们得到一个整数。现在,如果我们将它乘以一天(再次以毫秒为单位),我们会得到一个日期时间戳,其时间正好在一天的开始。
> now = Date.now()
1588837459929
> daysInMs = now/3600000
441343.73886916664
> justDays = Math.floor(daysInMs)
441343
> today = justDays*3600000
1588834800000
> new Date(today)
2020-05-07T07:00:00.000Z
干净简单。
如果您使用的是 jQuery。试试这个衬里:
$.datepicker.formatDate('dd/mm/yy', new Date());
这是格式化日期的约定
- 月份中的某天(无前导零)
dd - 日期(两位数)
o - 一年中的一天(没有前导零)
oo - 一年中的某一天(三位数)
D - 天名简称
DD - 天名长
- 一年中的月份(无前导零)
mm - 一年中的月份(两位数)
M - 月份名称简称
MM - 长月份名称
- 年(两位数)
yy - 年(四位数)
这是 jQuery datepicker 的参考
01
、02
、...、09
Date.prototype.toLocaleDateString()
方法是一种更灵活的解决方案。它是自 ECMAScript 5.1 以来 JavaScript 的一部分,并且得到了常青浏览器的良好支持。 MDN:toLocaleDateString()