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

IT技术 javascript date date-formatting
2021-01-14 03:14:25

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

6个回答

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

@MounaCheikhna - 我们怎么会在 999 年?
2021-03-21 03:14:25
@imin:因为少于 2 个字符意味着 1 个字符......并且 10(1 到 9)以下的所有内容都是 1 个字符,所以我们将有01, 02, ...,09
2021-03-24 03:14:25
如果您不在北美,请交换月份和日期。
2021-03-26 03:14:25
Date.prototype.toLocaleDateString()方法是一种更灵活的解决方案。自 ECMAScript 5.1 以来,它是 JavaScript 的一部分,并得到常青浏览器的良好支持。MDN:toLocaleDateString()
2021-04-05 03:14:25
感谢您的代码.. 但我仍然不明白, if(dd<10){dd='0'+dd} ... 为什么 < 10?从我从代码中了解到的是,如果一天的字符小于 2,只需在一天的前面添加一个 0..但为什么是 10?
2021-04-09 03:14:25

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

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

完美的。这是我在这里看到的最干净的方法。在 MomentJS 中适用于“今天,而不是现在”moment( new Date().toJSON().slice(0, 10) )
2021-03-13 03:14:25
它返回一个 JSON 日期时间。toUTCString()返回 UTC 日期时间。
2021-03-17 03:14:25
toJSON() 返回 utc 日期时间
2021-03-24 03:14:25
我不这么认为:) 看起来很简单!
2021-03-28 03:14:25
它不考虑 TimezoneOffset。在我测试时,我正在寻找“现在”,而我得到了“昨天”。stackoverflow.com/questions/13646446/...
2021-04-08 03:14:25

尽可能最短。

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

请注意,这将返回 UTC+0 的日期,而不是本地日期。
2021-03-30 03:14:25
由于时区偏移,这仍然失败。
2021-04-04 03:14:25
你的第二个答案是最好的。
2021-04-06 03:14:25

更新!, 向下滚动

如果你想要对最终用户来说简单漂亮的东西...... 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 更新经过多次拖延,我终于在GitHubbed 上更新了它,并使用我一直在为自己使用的最终解决方案进行了更新。它甚至在最后一刻进行了一些编辑以使其更甜蜜!如果您正在寻找旧的jsFiddle,请参阅此

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

快速链接

风味 1new Date().format(String) 我个人的最爱。我知道禁忌,但在日期对象上效果很好。请注意您可能对日期对象使用的任何其他 mod。

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

BONUS Flavor(需要 jQuery)$.date(Date, String) 这不仅仅是一个简单的format选项。它扩展了基本 Date 对象并包括诸如addDays. 有关更多信息,请参阅Git

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

这个模组还有一个更长的预制格式列表。要使用预制格式,只需输入其密钥名称。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'
    • '美国短裤' == '米/日/年'
    • 'AMERICANSHORTWTIME' == 'm/d/Y h:i:sA'
    • '原子' == 'Ymd\\TH:i:sP'
    • 'COOKIE' == 'l dMY H:i:s T'
    • '欧洲' == 'j FY'
    • '欧洲短裤' == 'dmY'
    • 'EUROPEANSHORTWTIME' == 'dmY H:i:s'
    • 'ISO8601' == 'Ymd\\TH:i:sO'
    • '合法' == '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'
  • '漂亮'
    • '漂亮-a' == 'g:i.sA l jS \\o\\f FY'
    • 'pretty-b' == 'g:iA l jS \\o\\f FY'
    • '漂亮-c' == 'n/d/Y g:iA'
    • '漂亮-d' == 'n/d/Y'
    • '漂亮-e' == 'F jS - g:ia'
    • '漂亮-f' == 'g:iA'

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


@KamranAhmed 将近 2 年和 40 多张选票之后,我认为付出的努力是值得的。哈哈。从那以后,我亲自扩展了这个课程,但没有上传,因为我认为大多数人会使用我推荐的其他 js 日期插件,但我想我应该让它更加“公开”并将其添加到这里。
2021-03-13 03:14:25
moment.js 现在是你现在会使用的东西
2021-03-16 03:14:25
上面有一个错字(我花了一段时间才发现),它在行中使用了变量“today”:“dayOfMonth = today +”
2021-03-30 03:14:25
“today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder” - JS 是愚蠢的语言。
2021-03-30 03:14:25

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

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

document.write(today);

这使用 UTC 设置小时数,这可能不适用于所有用例。
2021-03-13 03:14:25
我也同意。完美回答问题。谢谢你。
2021-03-16 03:14:25
我同意。其实我想写一个类似这个的答案,然后弹出一个小窗口,问我是否已经阅读了所有的答案。因为我只看了最上面的答案,所以我决定检查是否有任何正确的答案,这个是第一个正确的答案。
2021-03-24 03:14:25
这似乎是实际回答问题的唯一答案。其他人都回答了如何将日期格式化为字符串。
2021-04-04 03:14:25