首页 文章

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

提问于
浏览
1804

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

30 回答

  • 20
    var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
    document.write(utc);
    

    如果您要重用 utc 变量(例如 new Date(utc) ),请使用 replace 选项,因为Firefox和Safari无法识别带破折号的日期 .

  • 35

    如果你想要一个简单的 DD/MM/YYYY 格式,我've just come up with this simple solution, although it doesn' t前缀缺少零 .

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

    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 .

  • 37

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

  • 60

    如果您对YYYY-MM-DD格式感到满意,这也可以完成 .

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

    2018-03-10

  • 20
    new Date().toISOString().slice(0,10);
    

    也会工作

  • 11

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

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

  • 127

    A one-line JS solution:

    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 todayDate =“2/7/2017”“works”*在IE10中

    EDIT 2/7/2017

    我发现IE10和IE Edge做的事情有点不同......去看看 . 以 new Date(Date.now()).toLocaleString() 作为输入,

    IE10返回:

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

    我可以写一个很长的函数和FTFY . 但 you really ought to use moment.js for this stuff. 我的脚本只是清理它并为您提供扩展的传统美国符号: > todaysDate = "March 06, 2017"

    IE EDGE返回:

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

    当然,这可不容易 . Edge's date string has invisible "•" characters between each visible one. 因此,我们现在不仅要检查第一个字符是否是数字,而且是前3个字符,因为事实证明整个日期范围内的任何单个字符最终都会在某个点上成为点或斜线 . 所以为了简单起见,只需要前三个字符(针对未来恶作剧的微小缓冲),然后检查数字 . 应该注意的是,这些不可见的点可能会持久存在于您的代码中 . 我有更大的计划,而不仅仅是将这个字符串打印到你的视图中 .

    ∴ updated one-liner:

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

    ORIGINAL ANSWER

    我有一个单行代表:

    new Date(Date.now()).toLocaleString().split(', ')[0];
    

    [1] 会给你一天的时间 .

  • 46

    你可以使用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>
    
  • 43

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

    new Date( 3600000*Math.floor(Date.now()/3600000) )
    
  • 3

    你可以用它

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

    The shortest possible.

    要获得类似“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)
    

    此外,您可以传递locale作为参数,例如 toLocaleDateString("sr") 等 .

  • 3

    这可能对你有所帮助

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

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

  • 2161

    由于 toISOString() 仅返回当前UTC时间,而不是本地时间 . 我们必须使用'.toString()'函数来制作日期,以获得 yyyy-MM-dd 格式的日期

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);
    

    To get date and time into in yyyy-MM-ddTHH:mm:ss format

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);
    

    To get date and time into in yyyy-MM-dd HH:mm:ss format

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
    
  • 93

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

    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    
    if(dd<10) {
        dd = '0'+dd
    } 
    
    if(mm<10) {
        mm = '0'+mm
    } 
    
    today = mm + '/' + dd + '/' + yyyy;
    document.write(today);
    

    这将以mm / dd / yyyy的格式为您提供今天的日期 .

    只需将 today = mm +'/'+ dd +'/'+ yyyy; 更改为您希望的任何格式 .

  • 3

    您可以使用扩展Date对象的Date.js库,因此您可以使用.today()方法 .

  • 17

    你可以结帐

    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

  • 9

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

    var today = new Date();
        today.setHours(0, 0, 0, 0);
    
    document.write(today);
    
  • 96

    您可以像现在这样获取当前日期调用静态方法:

    var now = Date.now()
    

    参考:

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

  • 360

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

    var date = new Date();
    var TimeStamp = date.toLocaleString();
    
    function CurrentTime(){
      alert(TimeStamp);
    }
    

    这将获取当前时间,将其传递给基于位置的字符串,然后您可以调用函数CurrentTime来显示时间 . 对我来说,这是获得时间戳的最有效方法 .

  • 5
    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(' ') 在每个空格上划分上面的字符串并返回一个数组,如下所示:[_ 87373,"Jun",_ "28","2013","15:31:14",_ 87878,"(PDT)"]

    • (new Date()).toString().split(' ').splice(1,3).join(' ') 从上面的数组中获取第二个,第三个和第四个值,用空格连接它们,并返回一个字符串"Jun 28 2013"

  • 4
    var date = new Date().toLocaleDateString("en-US");
    

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

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

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

  • 5

    这每次都有效:

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

    如果你正在使用jQuery . 尝试这一个班轮:

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

    以下是格式化日期的约定

    • d - 月中的某一天(没有前导零)

    • dd - 月中的某一天(两位数)

    • o - 一年中的一天(没有前导零)

    • oo - 一年中的一天(三位数)

    • D - 天名短

    • DD - 天名长

    • m - 一年中的月份(无前导零)

    • mm - 一年中的一个月(两位数)

    • M - 月名短

    • MM - 月份名称长

    • 年 - (两位数)

    • yy - 年(四位数)

    这是jQuery datepicker的参考

  • 5

    试试这个:

    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
    
  • 4
    new Date().toDateString();
    

    结果:

    “2016年2月3日星期三”

  • 6

    如果您正在寻找对日期格式的更精细控制,我建议您查看momentjs . 很棒的图书馆 - 只有5KB . http://momentjs.com/

  • 26

    更新!,向下滚动

    如果你想为最终用户提供简单漂亮的东西...... 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经过多次拖延,我终于GitHubbed并用我自己使用的最终解决方案更新了这个 . 甚至还有一些最后一分钟的编辑让它更甜!如果你正在寻找旧的jsFiddle,请看这个 .

    此更新有两种口味,但仍然相对较小,但不如我上面的原始答案那么小 . 如果你想要非常小,那就去吧 .
    另请注意:这仍然比moment.js更少臃肿 . 虽然moment.js很好,但是它有许多世俗的方法,这需要学习时刻,好像它是一种语言 . 我这里使用与PHP:date相同的通用格式 .

    快速链接

    Flavor 1 new Date() . format(String)My Personal Fav . 我知道禁忌,但在日期对象上工作得很好 . 只要注意日期对象可能有的任何其他mod .

    //  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 param的方法调用 .

    //  use as simple as
    dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34
    

    BONUS Flavor(需要jQuery)$ . 日期(日期,字符串)这不仅包含一个简单的格式选项 . 它扩展了基本Date对象,并包含addDays等方法 . 有关更多信息,请参阅Git .

    在这个mod中,格式字符的灵感来自PHP:date . 有关完整列表,请参阅我的README

    此mod还有更长的预制格式列表 . 要使用预制格式,只需输入其密钥名称即可 . 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' == 'Y-m-d h:i:s'

    • 'postgreSQL' == 'Y.z'

    • 'postgreSQL2' == 'Yz'

    • 'soap' == 'Y-m-d\TH:i:s.u'

    • 'soap2' == 'Y-m-d\TH:i:s.uP'

    • 'unixTimestamp' == '@U'

    • 'xmlrpc' == 'Ymd\TG:i:s'

    • 'xmlrpcCompact' == 'Ymd\tGis'

    • 'wddx' == 'Y-n-j\TG:i:s'

    • 'constants'

    • 'AMERICAN' == 'F j Y'

    • 'AMERICANSHORT' == 'm/d/Y'

    • 'AMERICANSHORTWTIME' == 'm/d/Y h:i:sA'

    • 'ATOM' == 'Y-m-d\TH:i:sP'

    • 'COOKIE' == 'l d-M-Y H:i:s T'

    • 'EUROPEAN' == 'j F Y'

    • 'EUROPEANSHORT' == 'd.m.Y'

    • 'EUROPEANSHORTWTIME' == 'd.m.Y H:i:s'

    • 'ISO8601' == 'Y-m-d\TH:i:sO'

    • 'LEGAL' == 'j F Y'

    • 'RFC822' == 'D d M y H:i:s O'

    • 'RFC850' == 'l d-M-y H:i:s T'

    • 'RFC1036' == 'D d M y H:i:s O'

    • 'RFC1123' == 'D d M Y H:i:s O'

    • 'RFC2822' == 'D d M Y H:i:s O'

    • 'RFC3339' == 'Y-m-d\TH:i:sP'

    • 'RSS' == 'D d M Y H:i:s O'

    • 'W3C' == 'Y-m-d\TH:i:sP'

    • 'pretty'

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

    • 'pretty-f' == 'g:iA'

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


  • 196

    更清洁,更简单的版本:

    new Date().toLocaleString();
    

    结果 varies 根据用户的 locale

    2017年2月27日上午9:15:41

相关问题