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

2009-10-07 javascript date date-formatting

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

Answers

使用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;您想要的任何格式。

更新! ,向下滚动

如果您想给最终用户一些简单的事情... ... 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

味道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'=='Y.z'
    • 'postgreSQL2'=='Yz'
    • '肥皂'=='Ymd \\ TH:i:s.u'
    • '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 \来转义字符。


尝试这个:

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

您可以使用扩展了 Date对象的Date.js库,从而可以使用.today()方法。

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

你可以用这个

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

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 utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

如果要重用utc变量(例如new Date(utc) ,请使用replace选项,因为Firefox和Safari无法识别带短划线的日期。

每次都有效:

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

(function() { var d = new Date(); return new Date(d - d % 86400000); })()
var date = new Date().toLocaleDateString("en-US");

另外,您可以使用两个参数调用toLocaleDateString方法:

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

关于MSDN的文章 。有关MDN上此方法的更多信息。

您可以使用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 today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);

我认为这是一个古老的问题,但是最简单的方法如下:

var date = new Date();
var TimeStamp = date.toLocaleString();

function CurrentTime(){
  alert(TimeStamp);
}

这将获取当前时间,并根据位置将其传递给字符串,然后您可以调用函数CurrentTime来显示时间。对我来说,这是为某事获取时间戳的最有效方法。

这是我目前的最爱,因为它既灵活又模块化。它是(至少)三个简单功能的集合:

/**
 * 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];
};
var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);

您可以像下面这样通过静态方法获取当前日期:

var now = Date.now()

参考:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now

尝试这个.. 的HTML

<p id="date"></p>

JS

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

当前日期的工作演示

演示版

像这样漂亮地打印日期。

2015年6月1日,上午11:36:48

https://gist.github.com/Gerst20051/7d72693f722bbb0f6b58

如果您想使用简单的DD/MM/YYYY格式,尽管它没有前缀缺失的零,但我只是想出了一个简单的解决方案。

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );

Varun的答案不考虑TimezoneOffset 。这是一个做的版本:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

TimezoneOffset是分钟,而Date构造函数需要毫秒,因此乘以60000

您可以结帐

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

并参阅Date()构造函数的文档。 链接

我不知道它是否会帮助任何人,但是我正在使用它来获取今天的Date对象。

new Date( 3600000*Math.floor(Date.now()/3600000) )
new Date().toISOString().slice(0,10); 

也会工作

这有什么大不了的。最干净的方法是

var currentDate=new Date().toLocaleString().slice(0,10);

基础

如果您对Sun Jan 24 2016 21:23:07 GMT+0100 (CET)的格式感到满意,则可以使用以下代码:

var today = new Date();

Date.prototype.toLocaleDateString()

如果要格式化输出,请考虑使用Date.prototype.toLocaleDateString()

var today = new Date().toLocaleDateString('de-DE', {     
    weekday: 'long', 
    year: 'numeric',
    month: 'long',
    day: 'numeric'
});

如果您今天(2016年1月24日)在现代浏览器上执行该代码,它将生成字符串Sonntag, 24. Januar 2016 。较旧的浏览器可能会产生不同的结果,例如。 IE <11不支持语言环境或选项参数。

习惯

如果Date.prototype.toLocaleDateString()不够灵活,无法满足您的需要,则可以考虑创建一个自定义的Date对象,如下所示:

var DateObject = (function() {
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    var date = function(str) {
        this.set(str);
    };
    date.prototype = {
        set : function(str) {
            var dateDef = str ? new Date(str) : new Date();
            this.day = dateDef.getDate();
            this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
            this.month = dateDef.getMonth() + 1;
            this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
            this.monthName = monthNames[this.month - 1];
            this.year = dateDef.getFullYear();
        }
    };
    return date;
})();

如果您包括该代码并今天(2016年1月24日)执行了new DateObject() ),它将产生一个具有以下属性的对象:

day: 24
dayPadded: "24"
month: 1
monthPadded: "01"
monthName: "January"
year: 2016
new Date().toDateString();

结果:

“ 2016年2月3日星期三”

最短的时间。

要获取类似“ 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")等。

缩小了2.39KB。一个文件。 https://github.com/rhroyston/clock-js

只是想帮助...

在此处输入图片说明

更干净,更简单的版本:

new Date().toLocaleString();

结果根据用户的区域设置 而异

2017/2/27上午9:15:41

这可能对您有帮助

var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

这将以dd / MM / yyyy格式打印当前日期

最新编辑:19/8/23 date- fns库的工作原理与moment.js相似,但是占用空间却较小。它使您可以选择要包含在项目中的功能,因此不必编译整个库即可格式化今天的日期。如果您的项目没有最小的第三方库,那么我会支持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最新消息和chrome todaysDate = "2/7/2017"返回todaysDate = "2/7/2017"
IE10 +中的“作品” *

说明

我发现IE10和IE Edge的功能有所不同。 使用new Date(Date.now()).toLocaleString()作为输入,

IE10返回:

"Tuesday, February 07, 2017 2:58:25 PM"

我可以写一个大的long函数和FTFY。但是, 您确实应该对这些东西使用moment.js我的脚本只是清理了一下,并为您提供了扩展的传统美国符号: > todaysDate = "March 06, 2017"

IE EDGE返回:

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

当然不可能那么容易。 Edge的日期字符串在每个可见的字符串之间都有不可见的“•”字符。因此,我们现在不仅要检查第一个字符是否是数字,还要检查前三个字符,因为事实证明,整个日期范围内的任何单个字符最终都将在某个点上是点或斜杠。因此,为了简单起见 ,只需将.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]将给您一天中的时间。

如果您使用的是jQuery。试试这个衬垫:

$.datepicker.formatDate('dd/mm/yy', new Date());

这是格式化日期的惯例

  • d-每月的某天(前导零)
  • dd-月份中的日期(两位数)
  • o-一年中的某天(无前导零)
  • oo-一年中的某天(三位数)
  • D-天名短
  • DD-天名长
  • m-一年中的月份(前导零)
  • 毫米-一年中的月份(两位数)
  • M-月名简称
  • MM-月名长
  • y-年(两位数)
  • yy-年(四位数)

这是jQuery datepicker的参考

您可以使用下面提供的DATE API来日常使用日期格式以及获取当前日期,昨天等。 如何使用 例如

 var dt = new Date();  
       /// ANY DATE YOU WANT --  dt = new Date(""July 21, 1983 01:15:00"")

       dateObj = dt.getFormattedDate();

       alert( dateObj.isToday() );
       alert( dateObj.todayDay() );
       alert( dateObj.monthNameDayYear() );

(function () {

    fnDateProcessor = function () {
        var that = this;

        return {

            yyyymmdd: function (separator) {
                var fdate = this.formatDate(true, true) ,
                    separator = separator ? separator : "-";
                return fdate.year + separator + fdate.month + separator + fdate.day;
            },

            monthNameDayYear: function () {
                var fdate = this.formatDate(true, true);
                return fdate.monthName + " " + fdate.day + ", " + fdate.year;
            },

            ddmmyyyy: function (separator) {
                var fdate = this.formatDate(true, true) ,
                    separator = separator ? separator : "/";
                return fdate.day + separator + fdate.month + separator + fdate.year;
            },

            meridianTime: function () {
                var fdate = this.formatDate();
                return fdate.hour + ":" + fdate.minute + " " + fdate.meridian;
            },

            monthDay: function (separator) {

                var fdate = this.formatDate();
                separator = checkSeparator(separator);
                return fdate.monthName.substring(0, 3) + separator + fdate.day;

            },

            weekMonthDayYear: function () {
                var fdate = this.formatDate();
                //separator = checkSeparator(separator);

                return fdate.weekDay + " " + fdate.monthName.substring(0, 3) +
                    fdate.day + " ," + fdate.year;
            },

            timeZoneInclusive: function () {

                return new Date(that);
            },

            todayDay: function () { return new Date().getDate(); },
            todayMonth: function () { return new Date().getMonth() + 1; },
            dateDay: function () { return this.formatDate().day; },
            dateMonth: function () { return this.formatDate().month; },
            isToday: function () { return this.sameDate(new Date()); },
            isYesterday: function () {
                d = new Date(); d.setDate(d.getDate() - 1);
                return this.sameDate(d);
            },

            formatDate: function () {
                var zeroPaddedMnth = true, zeroPaddedDay = false,
                    zeroPaddedHr = false, zeroPaddedMin = true;
                // Possible to take Options arg that overide / merge to defaults

                var monthNames = [
                    "January", "February", "March",
                    "April", "May", "June", "July",
                    "August", "September", "October",
                    "November", "December"
                ];
                var weekDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

                var day = getFormattedDay(that.getDate(), zeroPaddedDay);
                var monthIndex = that.getMonth();
                var month = getFormattedMonth(monthIndex + 1, zeroPaddedMnth);
                var year = that.getFullYear();
                var wkDay = that.getDay();
                var hour = getFormattedHour(that.getHours(), zeroPaddedHr);
                var minute = getFormattedMinute(that.getMinutes(), zeroPaddedMin);
                var meridian = getMeridian(that.getHours());

                return {
                    "day": day, "monthName": monthNames[monthIndex], "month": month,
                    "weekDay": weekDays[wkDay], "year": year, "hour": hour, "minute": minute,
                    "meridian": meridian
                };
            },

            compareDate: function (d2) {     /// validates if caller is less than argument                            
                d2 = _isString(d2) ? new Date(d2) : d2;

                return !this.sameDate(d2)
                    && typeof d2 != "number"
                    ? that < d2 : false;
            },

            sameDate: function (d) {
                return that.getFullYear() === d.getFullYear()
                    && that.getDate() === d.getDate()
                    && that.getMonth() === d.getMonth();
            },

            dateAfter: function (separator) {
                var fdate = this.formatDate();
                var separator = separator ? separator : "-";
                return fdate.year + separator + fdate.month + separator + (fdate.day + 1);
            }

        };

    };


    function _isString(obj) {
        var toString = Object.prototype.toString;
        return toString.call(obj) == '[object String]';
    }

    function checkSeparator(separator) {
        // NOT GENERIC ... NEEDS REVISION
        switch (separator) {
            case " ": sep = separator; break;
            case ",": sep = " ,"; break;
            default:
                sep = " "; break;
        }

        return sep;
    }

    function getFormattedHour(h, zeroPadded) {
        h = h % 12;
        h = h ? h : 12;    //  12 instead of 00
        return zeroPadded ? addZero(h) : h;
    }

    function getFormattedMinute(m, zeroPadded) {

        return zeroPadded ? addZero(m) : m;
    }

    function getFormattedDay(dd, zeroPadded) {

        return zeroPadded ? addZero(dd) : dd;
    }
    function getFormattedMonth(mm, zeroPadded) {

        return zeroPadded ? addZero(mm) : mm;
    }

    function getMeridian(hr) {

        return hr >= 12 ? 'PM' : 'AM';
    }

    function addZero(i) {
        if (i < 10) {
            i = "0" + i;
        }
        return i;
    }


    Date.prototype.getFormattedDate = fnDateProcessor;

} ());

最简短的答案是: new Date().toJSON().slice(0,10)

这可能对您有帮助

let d = new Date();                      

this.dateField = element(by.xpath('xpath here'));
this.datetField.sendKeys((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear());

您可以通过在JavaScript中使用new Date()来获取当前浏览器的日期。

但是目前,我们有一个很好的插件, 可以使用moment.js 在JavaScript中解析,验证,操作和显示日期和时间。

如果您对YYYY-MM-DD格式感到满意,那么也可以完成这项工作。

new Date().toISOString().split('T')[0]

2018-03-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',' '));

我以为我会粘贴我实际使用的日期:

function realDate(date){
    return date.getDate() + "/" + (date.getMonth()+1) + "/" + date.getUTCFullYear();
}

var ourdate = realDate(new Date);

如果您要对日期格式进行更多的细化控制,我强烈建议您查看date-FNS。很棒的库-比moment.js小得多,它的基于函数的方法使其比其他基于类的库快得多。提供日期所需的大量操作。

https://date-fns.org/docs/使用入门

如果您希望将其格式化为字符串。

statusUpdate = "time " + new Date(Date.now()).toLocaleTimeString();

输出“时间11:30:53 AM”

此答案适用于正在寻找ISO-8601之类的格式和时区的日期的人。 对于那些不想包含任何日期库的人来说,它是纯JS。

      var date = new Date();
      var timeZone = date.toString();
      //Get timezone ( 'GMT+0200' )
      var timeZoneIndex = timeZone.indexOf('GMT');
      //Cut optional string after timezone ( '(heure de Paris)' )
      var optionalTimeZoneIndex = timeZone.indexOf('(');
      if(optionalTimeZoneIndex != -1){
          timeZone = timeZone.substring(timeZoneIndex, optionalTimeZoneIndex);
      }
      else{
          timeZone = timeZone.substring(timeZoneIndex);
      }
      //Get date with JSON format ( '2019-01-23T16:28:27.000Z' )
      var formattedDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON();
      //Cut ms
      formattedDate = formattedDate.substring(0,formattedDate.indexOf('.'));
      //Add timezone
      formattedDate = formattedDate + ' ' + timeZone;
      console.log(formattedDate);

在控制台中打印如下内容:

2019-01-23T17:12:52 GMT + 0100

JSFiddle: https ://jsfiddle.net/n9mszhjc/4/

能够以自定义格式呈现并在不同语言环境中使用月份名称:

const locale = 'en-us';
const d = new Date(date);

const day = d.getDate();
const month = d.toLocaleString(locale, { month: 'long' });
const year = d.getFullYear();

const time = d.toLocaleString(locale, { hour12: false, hour: 'numeric', minute: 'numeric'});

return `${month} ${day}, ${year} @ ${time}`; // May 5, 2019 @ 23:41

这是获取格式化日期的好方法

let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);

这做了很多;

var today = new Date();
var date = today.getFullYear()+'/'+(today.getMonth()+1)+'/'+today.getDate();

我的解决方案使用字符串文字查找更多...

// Declare Date as d
var d = new Date()

// Inline formatting of Date
const exampleOne = `${d.getDay()}-${d.getMonth() + 1}-${d.getFullYear()}`
// January is 0 so +1 is required

// With Breaklines and Operators
const exampleTwo = `+++++++++++
With Break Lines and Arithmetic Operators Example
Year on newline: ${d.getFullYear()}
Year minus(-) 30 years: ${d.getFullYear() - 30}
You get the idea...
+++++++++++`

console.log('=============')
console.log(exampleOne)
console.log('=============')

console.log(exampleTwo)

要获取日期,则将其内置到javascript中:

new Date();

如果您正在寻找日期格式,并且无论如何都在使用Kendo JQuery UI库供您的网站使用,那么我建议您使用内置的kendo函数:

kendo.toString(new Date(), "yyMMdd"); //or any other typical date format

有关受支持格式的完整列表, 请参见此处

如果仅需要字符串表示形式,则只需使用:

Date();

在下面的代码片段中使用此代码

var currentDate = new Date();
var date=currentDate.getDate()+'/'+(currentDate.getMonth()+1)+'/'+currentDate.getFullYear();
console.log(date);

试试这个,您可以相应地调整日期格式:

var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth() + 1;
    var yyyy = today.getFullYear();
    if (dd < 10) {
        dd = '0' + dd;
    }
    if (mm < 10) {
        mm = '0' + mm;
    }
 var myDate= dd + '-' + mm + '-' + yyyy;

TL; DR

当您需要本地计算机(客户端)上的当前时间时,这里找到的大多数答案才是正确的。该时间通常不被认为是可靠的来源(它可能与另一个系统不同)。

可靠的来源是:

  • Web服务器的时钟(但请确保已更新)
  • 时间API和CDN

细节

Date实例上调用的方法将基于您的计算机的本地时间返回一个值。

可以在“ MDN Web文档”中找到更多详细信息: JavaScript Date对象

为了方便起见,我在他们的文档中添加了相关说明:

(...)获取日期和时间或其组成部分的基本方法都在本地(即主机系统)时区和偏移量下工作。

另一个提到这一点的来源是: JavaScript日期和时间对象

重要的是要注意,如果某人的时钟关闭了几个小时或处于不同的时区,那么Date对象将创建与您自己的计算机上创建的时间不同的时间。

您可以使用一些可靠的资源:

但是,如果准确性对于您的用例而言并不重要,或者如果您只需Date.now() Date与本地计算机的时间相关,则可以安全地使用Javascript的Date基本方法,如Date.now()

一个简单的实现方法(考虑到您当前的时区,它利用ISO yyyy-mm-dd格式)是:

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

通常,这是一种通用的兼容日期格式,您可以根据需要将其转换为纯日期值:

Date.parse(d); // 1582044297000

尝试

`${Date()}`.substr(4,11)

console.log( `${Date()}`.substr(4,11) )

Related