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

2020/09/14 22:01 · javascript ·  · 0评论

如何在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;为所需的任何格式。

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

replace如果您要重复使用utc变量,请使用选项,例如new Date(utc),因为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

快速链接

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

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

风味2dateFormat(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 FY'
    • 'EUROPEANSHORT'=='dmY'
    • 'EUROPEANSHORTWTIME'=='dmY H:i:s'
    • 'ISO8601'=='Ymd \\ TH:i:sO'
    • 'LEGAL'=='j FY'
    • '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 FY'
    • 'pretty-b'=='g:iA l jS \\ o \\ f FY'
    • '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(' ') 从上面的数组中获取第二个,第三个和第四个值,将它们与空格连接,然后返回字符串“ Jun 28 2013”

每次都有效:

    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);
var date = new Date().toLocaleDateString("en-US");

另外,您可以toLocaleDateString使用两个参数来调用method

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

关于MSDN的文章关于MDN的更多信息

更干净,更简单的版本:

new Date().toLocaleString();

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

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

如果您对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

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

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

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

最简单的答案是: 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日星期三”

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

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

也会工作

最新编辑:19年8月23日
日期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"
在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()的前三个字符(针对将来的恶作剧的微小缓冲区)设置.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]会给您一天中的时间。

你可以用这个

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

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

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

这是格式化日期的惯例

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

这是jQuery datepicker的参考

一个简单的实现方法(考虑到您当前的时区,它利用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

这样,您将获得带有时间0:00:00的Today Date实例。

操作原理非常简单:我们采用当前时间戳,并将其除以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

干净简单。

var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);

您可以结帐

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

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

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

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

这可能对您有帮助

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

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

本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhonghuoqudangqianriqi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!