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


当前回答

如果您想要一个简单的DD/MM/YYYY格式,我刚刚提出了这个简单的解决方案,尽管它没有前缀缺失的零。

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

其他回答

能够以自定义格式呈现,并在不同地区使用月份名称:

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

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

var today=新日期();var dd=字符串(today.getDate()).padStart(2,'0');var mm=字符串(today.getMonth()+1).padStart(2,'0')//一月是0!var yyyy=today.getFullYear();今天=mm+'/'+dd+'/'+yyyy;document.write(今天);

这将以mm/dd/yyyy的格式显示今天的日期。

只需更改今天=mm+'/'+dd+'/'+yyyy;按照您希望的格式。

已更新!,向下滚动

如果你想让最终用户觉得简单漂亮。。。此外,在下面的第一个版本中修复了一个小后缀问题。现在正确返回后缀。

var objToday=新日期(),工作日=新阵列(‘星期一’、‘星期一”、‘星期二’、‘周三’、‘周四’、‘周五’、‘周六’),dayOfWeek=工作日[objToday.getDay()],domEnder=function(){var a=objToday;if(/1/.test(parseInt((a+“”).charAt(0))))返回“th”;a=parseInt((a+“”).charAt(1));返回1==a?“st”:2=a?“nd”:3==a?”rd“:”th“}(),dayOfMonth=今天+(objToday.getDate()<10)?'0’+objToday.getDate()+domEnder:objToday.getData()+domEnder,months=新阵列(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”),curMonth=月[objToday.getMonth()],curYear=objToday.getFullYear(),curHour=objToday.getHours()>12?objToday.getHours()-12:(objToday.getHoures()<10?“0”+objToday.getHours():objToday.getHoures()),curMinute=objToday.getMinutes()<10?“0”+objToday.getMinutes():objToday.getMinute(),curSeconds=objToday.getSeconds()<10?“0”+objToday.getSeconds():objToday.getSecond(),curMeridiem=objToday.getHours()>12?“下午”:“上午”;var today=curHour+“:”+curMinute+“.”+curSeconds+curMeridiem+“”+dayOfWeek+“”+dayOfMonth+“of”+curMonth+“,”+curYear;document.getElementsByTagName('1')[0].textContent=today;<h1></h1>

UBBER更新经过多次拖延,我终于在GitHubbed上更新了我自己使用的最终解决方案。它甚至在最后一刻做了一些编辑,让它更甜!如果你正在寻找旧的jsFiddle,请看这个。

这个更新有两种口味,虽然没有我上面的原始答案那么小,但仍然相对较小。如果你想要极小的尺寸,那就这样吧。另请注意:这仍然没有moment.js那么臃肿。虽然moment.jss很好,imo,但它有太多世俗的方法,需要像学习一种语言一样学习片刻。我这里使用与PHP相同的常见格式:date。

快速链接

日期.format.min.js 5.08 KBdateFormat.min.js 4.16 KB

风味1新日期().format(字符串)我的个人传真。我知道这个禁忌,但在约会对象上效果很好。只需注意日期对象可能具有的任何其他mod。

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

风味2日期格式(日期,字符串)更传统的一体化方法。具有上一个的所有功能,但通过带有Date参数的方法调用。

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

BONUS风味(需要jQuery)$.date(日期,字符串)这不仅仅包含一个简单的格式选项。它扩展了基础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”==“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”'常量'“美国”==“F j Y”“美洲海岸”==“m/d/Y”“美国时间”==“m/d/Y h:i:sA”“原子”==“Y-m-d\\TH:i:sP”“COOKIE”==“l d-M-Y H:i:s T”“欧洲”==“j F Y”“欧洲”==“d.m.Y”“欧洲时间”==“d.m.Y H:i:s”“ISO8601”==“Y-m-d\\TH:i:sO”“法律”==“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-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\来转义字符。


如果在“当前日期”之前,你正在考虑“今天”,那么这个技巧可能对你有用:

> new Date(3600000*Math.floor(Date.now()/3600000))
2020-05-07T07:00:00.000Z

这样,您将获得时间为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

干净简单。

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

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

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

Date.parse(d); // 1582044297000