如何在 JavaScript 中获取当前日期?

如何在 JavaScript 中获取当前日期?

答案

使用new Date()生成一个包含当前日期和时间的新Date对象。

var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

这将以 mm / dd / yyyy 的格式给您今天的日期。

today = 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 无法识别带短划线的日期。

更新! ,向下滚动

如果您想为最终用户提供一些简单易用的东西... 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)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[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 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

UBBER UPDATE经过长时间的拖延,我终于在GitHub 上进行了整理,并使用自己一直使用的最终解决方案对其进行了更新。它甚至在最后一刻进行了一些编辑,使其更甜美!如果您正在寻找旧的jsFiddle,请参阅 this

此更新有2种样式,尽管相对于我上面的原始答案还小,但仍然相对较小。如果您要很小,那就去吧。
另请注意:这仍然比 moment.js 少一些。 imo 虽然 moment.js 很不错,但它有太多世俗的方法,需要像学习语言一样学习瞬间。我这里使用与PHP相同的通用格式:date

快速链接

风味 1 new Date().format(String)我的个人收藏。我知道忌讳,但在 Date 对象上效果很好。请注意,您可能需要对 Date 对象进行任何其他修改。

//  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

奖金风味(需要 jQuery) $.date(Date, String)这不仅包含简单的format选项。它扩展了基础 Date 对象,并包含诸如addDays方法。有关更多信息,请参见Git

在此 mod 中,格式字符受PHP:date 的启发。有关完整列表,请参阅我的自述文件

这个 mod 还具有更长的预制格式列表。要使用预制格式,只需输入其键名。 dateFormat(new Date(), 'pretty-a');

  • '复合'
    • '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'
  • '常量'
    • '美国'=='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'
    • '欧洲'=='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'
  • '漂亮'
    • 'pretty-a'=='g:i.sA l jS \\ o \\ f F Y'
    • 'pretty-b'=='g:iA l jS \\ o \\ f F Y'
    • 'pretty-c'=='n / d / Y g:iA'
    • 'pretty-d'=='n / d / Y'
    • 'pretty-e'=='F jS-g:ia'
    • '漂亮 - f'=='g:iA'

您可能会注意到,可以使用 double \来转义字符。


最短的时间。

要获取类似 “2018-08-03” 的格式,请执行以下操作:

let today = new Date().toISOString().slice(0, 10)

console.log(today)

要获取类似 “8/3/2018” 的格式:

let today = new Date().toLocaleDateString()

console.log(today)

另外,您可以将语言环境作为参数传递,例如toLocaleDateString("sr")等。

如果您只想要没有时间信息的日期,请使用:

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);

尝试这个:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

结果会像

15/2/2012

如果您想对日期格式进行更多的粒度控制,我强烈建议您查看一下 momentjs。很棒的图书馆 - 只有 5KB。 http://momentjs.com/

您可以使用 moment.js: http ://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

要将其分解为以下步骤:

  1. (new Date()).toString()给出了 “2013 年 6 月 28 日星期五 15:30:18 GMT-0700(PDT)”

  2. (new Date()).toString().split(' ')在每个空格上分割上述字符串,并返回如下数组:[“Fri”,“Jun”,“28”,“2013”,“15: 31:14“,” GMT-0700“,”(PDT)“]]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ')从上面的数组中获取第二,第三和第四个值,将它们与空格连接,然后返回字符串 “2013 年 6 月 28 日”

每次都有效:

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(today);