问:

如何将 Date 对象格式化为字符串?

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

答1:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

如果您需要比当前接受的答案稍微少一点的格式控制,Date#toLocaleDateString 可用于创建标准区域设置特定的呈现。 locale 和 options 参数让应用程序指定应使用其格式约定的语言,并允许对呈现进行一些自定义。

选项关键示例:

日:一天的表示。可能的值为“数字”、“2 位”。 weekday:表示工作日。可能的值是“窄”、“短”、“长”。年份:年份的表示。可能的值为“数字”、“2 位”。月:月份的表示。可能的值是“numeric”、“2-digit”、“narrow”、“short”、“long”。小时:小时的表示。可能的值为“数字”、“2 位”。分钟:分钟的表示。可能的值为“数字”、“2 位”。 second:第二个的表示。可能的值为“数字”、2 位数字。

所有这些键都是可选的。您可以根据您的要求更改选项值的数量,这也将反映每个日期时间项的存在。

注意:如果您只想配置内容选项,但仍使用当前语言环境,则为第一个参数传递 null 将导致错误。请改用 undefined。

对于不同的语言:

“en-US”:美式英语 “en-GB”:英式英语 “hi-IN”:印地语 “ja-JP”:日语

您可以使用更多语言选项。

例如

var options = { weekday: ‘long’, year: ‘numeric’, month: ‘long’, day: ‘numeric’ }; var 今天 = 新日期(); console.log(today.toLocaleDateString(“en-US”)); // 9/17/2016 console.log(today.toLocaleDateString(“en-US”, options)); // 2016 年 9 月 17 日星期六 console.log(today.toLocaleDateString(“hi-IN”, options)); // शनिवार, 17 सितंबर 2016

您也可以将 toLocaleString() 方法用于相同目的。唯一的区别是这个函数提供了你不传递任何选项的时间。

// Example
9/17/2016, 1:21:34 PM

参考:

toLocaleString()

toLocaleDateString()

this 说它是非标准的,但 mozzilla 没有具体说明

似乎这个答案应该是最好的“当前”答案。还使用选项“hour12: true”来使用 12 小时制与 24 小时制格式。也许应该在答案中添加到您的摘要列表中。

@Iarwa1n 此答案未提及,但您可以使用 toLocaleDateString 仅返回某些部分,然后您可以根据需要加入这些部分。在下面检查我的答案。 date.toLocaleDateString("en-US", { day: 'numeric' }) + "-"+ date.toLocaleDateString("en-US", { month: 'short' }) + "-" + date.toLocaleDateString("en-US", { year: 'numeric' }) 应该给 16-Nov-2019

对以下链接进行了长时间的挖掘,但我发现了它们的隐藏位置@MosesSchwartz:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

@KVij - 这是格式化日期的一种非常低效的方法,特别是考虑到有一个 formatToParts method 返回对象数组中的所有部分。

答2:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

对于自定义分隔的日期格式,您必须从 DateTimeFormat 对象(它是 ECMAScript Internationalization API 的一部分)中提取日期(或时间)组件,然后手动创建带有所需分隔符的字符串。

为此,您可以使用 DateTimeFormat#formatToParts。您可以解构数组,但这并不理想,因为数组输出取决于语言环境:

{ // 示例 1 let f = new Intl.DateTimeFormat(‘en’);让 a = f.formatToParts();控制台.log(a); } { // 示例 2 let f = new Intl.DateTimeFormat(‘hi’);让 a = f.formatToParts();控制台.log(a); }

最好将格式数组映射到结果字符串:

函数加入(t,a,s){函数格式(m){让f=新Intl.DateTimeFormat(‘en’,m);返回 f.format(t); } return a.map(format).join(s); } let a = [{day: ‘numeric’}, {month: ‘short’}, {year: ‘numeric’}];让 s = join(new Date, a, ‘-’);控制台.log(s);

您也可以使用 DateTimeFormat#format 将 DateTimeFormat 的各个部分一一拉出,但请注意,在使用此方法时,截至 2020 年 3 月,ECMAScript 实现中有 a bug 涉及前导零在分钟和秒(这个错误被上面的方法规避)。

让 d = new Date(2010, 7, 5);让 ye = new Intl.DateTimeFormat(‘en’, { year: ‘numeric’ }).format(d);让 mo = new Intl.DateTimeFormat(‘en’, { month: ‘short’ }).format(d); let da = new Intl.DateTimeFormat(‘en’, { day: ‘2-digit’ }).format(d); console.log(${da}-${mo}-${ye});

在处理日期和时间时,通常值得使用库(例如 moment.js、luxon),因为该字段有许多隐藏的复杂性。

请注意,上述解决方案中使用的 ECMAScript 国际化 API 不受支持in IE10(2020 年 2 月的0.03%全球浏览器市场份额)。

或者扩展 Date 对象,就像我在 stackoverflow.com/questions/3187790/… 中所做的那样

我知道 ye 是年,mo 是月,da 是日。 o 是什么? a 是什么? m 是什么?你能使用正确的变量名吗?

在 2021 年,momentjs 文档说我们希望阻止 Moment 被用于未来的新项目

这是最好的答案恕我直言(最后一个片段),因为允许任何格式的灵活性,即您不需要寻找满足您需求的国家代码

答3:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

如果您需要使用纯 JavaScript 快速格式化您的日期,请使用 getDate、getMonth + 1、getFullYear、getHours 和 getMinutes:

var d = new Date();var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();// 16-5-2015 9:50

或者,如果您需要用零填充它:

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);// 16-05-2015 09:50

您还可以使用 .toString().padStart(2, '0') 填充零

@BennyJobigan 应该提到的是,String.padStart() 仅适用于 ECMAScript 2017。

答4:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

使用 date.format library:

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

返回:

Saturday, June 9th, 2007, 5:46:21 PM 

dateformat on npm

http://jsfiddle.net/phZr7/1/

他的“L”代码是错误的,他应该删除“L > 99?”部分...除此之外,它非常整洁,如果不是太好本地化的话。

此解决方案也可作为 npm 包提供:npmjs.com/package/dateformat

如果您要麻烦导入外部依赖项,我建议您使用 moment.js。它可以进行这种类型的日期格式化:momentjs.com/docs/#/displaying 而且它有更多的功能。

与 IE 中的 Date API 相比,时区也适用于日期格式

答5:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

好吧,我想要将今天的日期转换为 MySQL 友好的日期字符串,如 2012-06-23,并在我的一个查询中使用该字符串作为参数。我发现的简单解决方案是这样的:

var today = new Date().toISOString().slice(0, 10);

请记住,上述解决方案并未考虑您的时区偏移。

您可以考虑改用这个函数:

function toJSONLocal (date) {var local = new Date(date);local.setMinutes(date.getMinutes() - date.getTimezoneOffset());return local.toJSON().slice(0, 10);
}

如果您在一天的开始/结束时执行此代码,这将为您提供正确的日期。

var date = new Date();函数 toLocal(date) { var local = new Date(date); local.setMinutes(date.getMinutes() - date.getTimezoneOffset());返回 local.toJSON(); } function toJSONLocal(date) { var local = new Date(date); local.setMinutes(date.getMinutes() - date.getTimezoneOffset());返回 local.toJSON().slice(0, 10); } // 检查你的开发工具控制台 console.log(date.toJSON()); console.log(date.toISOString()); console.log(toLocal(date)); console.log(toJSONLocal(date));

Date.toISOString

日期.toJSON

字符串切片

外部示例

您可以执行 new Date(date + " UTC") 来欺骗时区,并且可以消除 setMinutes 行。伙计,javascript很脏

Y10K 兼容版本:var today = new Date().toISOString().slice(0,-14) :)

或者像这样new Date().toISOString().split('T')[0]

new Date().toISOString().slice(0, 16).replace('T',' ') 包括时间

只是评论说缺少时区并不是“一天开始/结束时”的一些小不便。例如,在澳大利亚,直到上午 11 点左右,日期可能是错误的——将近半天!

答6:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

自定义格式化功能:

对于固定格式,一个简单的功能就可以完成。以下示例生成国际格式 YYYY-MM-DD:

函数 dateToYMD(date) { var d = date.getDate(); var m = date.getMonth() + 1; //月份从 0 到 11 var y = date.getFullYear();返回 ‘’ + y + ‘-’ + (m<=9 ? ‘0’ + m : m) + ‘-’ + (d <= 9 ? ‘0’ + d : d); } console.log(dateToYMD(new Date(2017,10,5))); // 11 月 5 日

OP 格式可以生成如下:

function dateToYMD(date) { var strArray=[‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘十一月’,‘十二月’]; var d = date.getDate(); var m = strArray[date.getMonth()]; var y = date.getFullYear();返回 ‘’ + (d <= 9 ? ‘0’ + d : d) + ‘-’ + m + ‘-’ + y; } console.log(dateToYMD(new Date(2017,10,5))); // 11 月 5 日

注意:然而,扩展 JavaScript 标准库通常不是一个好主意(例如,通过将此函数添加到 Date 的原型中)。

更高级的功能可以基于格式参数生成可配置的输出。

如果编写格式化函数太长,有很多库可以完成它。其他一些答案已经列举了它们。但增加的依赖性也有它的对应部分。

标准 ECMAScript 格式化函数:

由于 ECMAScript 的更新版本,Date 类具有一些特定的格式化函数:

toDateString:依赖于实现,只显示日期。 https://262.ecma-international.org/#sec-date.prototype.todatestring new Date().toDateString(); // 例如“2016 年 11 月 11 日星期五”

toISOString:显示 ISO 8601 日期和时间。 https://262.ecma-international.org/#sec-date.prototype.toisostring new Date().toISOString(); // 例如“2016-11-21T08:00:00.000Z”

toJSON:JSON 的字符串化符。 https://262.ecma-international.org/#sec-date.prototype.tojson new Date().toJSON(); // 例如“2016-11-21T08:00:00.000Z”

toLocaleDateString:依赖于实现,区域设置格式的日期。 https://262.ecma-international.org/#sec-date.prototype.tolocaledatestring new Date().toLocaleDateString(); // 例如“21/11/2016”

toLocaleString:依赖于实现,区域设置格式的日期和时间。 https://262.ecma-international.org/#sec-date.prototype.tolocalestring new Date().toLocaleString(); // 例如“21/11/2016, 08:00:00 AM”

toLocaleTimeString:依赖于实现,采用区域设置格式的时间。 https://262.ecma-international.org/#sec-date.prototype.tolocaletimestring new Date().toLocaleTimeString(); // 例如“08:00:00 AM”

toString:日期的通用 toString。 https://262.ecma-international.org/#sec-date.prototype.tostring new Date().toString(); // 例如“2016 年 11 月 21 日星期五 08:00:00 GMT+0100(西欧标准时间)”

注意:可以从这些格式中生成自定义输出 >

新的 Date().toISOString().slice(0,10); //返回 YYYY-MM-DD

示例片段:

console.log("1) "+ 新日期().toDateString()); console.log("2) "+ new Date().toISOString()); console.log("3) "+ 新日期().toJSON()); console.log("4) "+ new Date().toLocaleDateString()); console.log("5) "+ new Date().toLocaleString()); console.log("6) "+ new Date().toLocaleTimeString()); console.log("7) "+ 新日期().toString()); console.log("8) "+ new Date().toISOString().slice(0,10));

指定标准函数的语言环境:

上面列出的一些标准函数取决于语言环境:

toLocaleDateString()

toLocaleTimeString()

toLocalString()

这是因为不同的文化使用不同的格式,并以不同的方式表达他们的日期或时间。默认情况下,该函数将返回在其运行的设备上配置的格式,但这可以通过设置参数 (ECMA-402) 来指定。

toLocaleDateString([locales[, options]])
toLocaleTimeString([locales[, options]])
toLocaleString([locales[, options]])
//e.g. toLocaleDateString('ko-KR');

option 第二个参数,允许在所选语言环境中配置更具体的格式。例如,月份可以显示为全文或缩写。

toLocaleString('en-GB', { month: 'short' })
toLocaleString('en-GB', { month: 'long' })

示例片段:

console.log("1) "+ new Date().toLocaleString(‘en-US’)); console.log("2) "+ new Date().toLocaleString(‘ko-KR’)); console.log("3) "+ new Date().toLocaleString(‘de-CH’)); console.log("4) "+ new Date().toLocaleString(‘en-GB’, { hour12: false })); console.log("5) "+ new Date().toLocaleString(‘en-GB’, { hour12: true }));

关于语言环境的一些良好做法:

大多数人不喜欢他们的日期以外国人格式出现,因此,尽可能保留默认语言环境(在任何地方设置“en-US”)。

实现从/到 UTC 的转换可能具有挑战性(考虑 DST、时区不是 1 小时的倍数等)。尽可能使用经过良好测试的库。

不要假设区域设置与一个国家/地区相关:几个国家/地区有很多(加拿大、印度等)

避免通过非标准方式检测语言环境。在这里您可以了解多个陷阱:检测键盘布局、通过地理位置检测语言环境等。

我认为英国示例的语言环境应该是“en-GB”以获得“dd/mm/yyyy”格式

我解决了这个问题。谢谢

很好地列出了 Intl.DateTimeFormat() constructor 支持的参数如下:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

感谢您从不使用“ECMA vodoo”的示例开始

.toJSON() 在底层使用 .toIsoString()(根据 docs)。 需要注意 ISO 转换会转换为另一个时区,这可能会更改日期部分(请参阅其他评论)。此外,似乎OP想要转换为Oracle(等)“语言环境/文化”,而不是人类......

答7:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

如果你已经在你的项目中使用 jQuery UI,你可以这样做:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));// formatted will be 'Jul 8, 2014'

一些日期选择器日期格式选项可用here。

答8:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

我认为您可以只使用 非标准 Date 方法toLocaleFormat(formatString)

formatString: 格式字符串与 C 中的 strftime() 函数所期望的格式相同。

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

参考:

本地化格式

时间

编辑添加:toLocaleFormat 现在已被弃用,如上面的链接所示。

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

toLocaleFormat() 似乎只适用于 Firefox。 IE 和 Chrome 对我来说都失败了。

Chrome 有 .toLocaleString('en') 方法。似乎新浏览器支持此 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

在此处阅读警告:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

new Intl.DateTimeFormat 似乎是替换 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

年后,此功能在其他浏览器中仍然无法使用,并且在 Firefox 中已被弃用Deprecated_toLocaleFormat

答9:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

纯 JavaScript 是小型一次性用户的最佳选择。

另一方面,如果您需要更多日期信息,MomentJS 是一个很好的解决方案。

例如:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

重要的是:除非您知道 YYYY 和 yyyy 之间的区别,否则不要使用 YYYY:stackoverflow.com/questions/15133549/…

@Domin 特定于 iOS 中的 NSDateFormatter,例如在 Objective-C 或 Swift 中使用。这个问题是关于浏览器中的 Javascript,这个答案使用 MomentJS,其中 YYYY(不是 yyyy)是标准年份,GGGG(不是 YYYY)是基于 ISO 周的年份。

答10:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

在现代浏览器 (*) 中,您可以这样做:

var today = new Date().toLocaleDateString('en-GB', {day : 'numeric',month : 'short',year : 'numeric'
}).split(' ').join('-');

今天执行的输出(2016 年 1 月 24 日):

'24-Jan-2016'

(*) According to MDN,“现代浏览器”指 Chrome 24+、Firefox 29+、Internet Explorer 11、Edge 12+、Opera 15+ & Safari nightly build。

答11:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

一行中的请求格式 - 没有库也没有 Date 方法,只有正则表达式:

var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')

在我的测试中,这在主要浏览器(Chrome、Safari、Firefox 和 IE)中可靠地工作。正如@RobG 指出的那样, Date.prototype.toString() 的输出依赖于实现,因此对于国际或非浏览器实现,只需测试输出以确保它在您的 JavaScript 引擎中正常工作。您甚至可以添加一些代码来测试字符串输出,并在进行正则表达式替换之前确保它与您期望的匹配。

原文链接:https://www.huntsbot.com/qa/laQE/how-do-i-format-a-date-in-javascript?lang=zh_CN&from=csdn

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

如何在 JavaScript 中格式化日期?相关推荐

  1. java 格式化 浮点数_如何在javascript中格式化浮点数?

    回答(13) 2 years ago 我猜的关键是首先正确地向上舍入,然后你可以将它转换为String . function roundOf(n, p) { const n1 = n * Math.p ...

  2. JavaScript 日期比较——如何在 JS 中比较日期

    日期是开发人员在创建实际应用程序时最常用的数据类型之一. 但通常,开发人员会在这种数据类型上苦苦挣扎,最终使用像 Moment.js 这样的日期库来完成简单的任务,这些任务不值得安装整个包所带来的大包 ...

  3. 现在JavaScript日期–如何在JavaScript中获取当前日期

    Many applications you build will have some sort of a date component, whether it's the creation date ...

  4. 如何在 JavaScript 中获取当前日期

    日常开发中我们经常会用到某种日期功能,比如内容的创建日期.活动的时间戳等.处理日期和时间戳格式可能会很麻烦.在本文中,我们将一起学习如何在 JavaScript中以各种格式获取当前日期. JavaSc ...

  5. java+script+当前日期_如何在JavaScript中获取当前日期?

    如何在JavaScript中获取当前日期? #1楼 您可以使用扩展了 Date对象的Date.js库,从而可以使用.today()方法. #2楼 如果您想对日期格式进行更多的粒度控制,我强烈建议您查看 ...

  6. 如何在Java中比较日期? [重复]

    本文翻译自:How to compare dates in Java? [duplicate] This question already has answers here : 这个问题已经在这里有了 ...

  7. 如何在JavaScript中获取时间戳

    如何在JavaScript中获取时间戳 +运算符 我们可以使用+运算符将日期对象直接转换为UNIX时间戳. 例如,我们可以这样写: +new Date() +日期对象之前操作者触发valueOf的方法 ...

  8. javascript国际化_如何在JavaScript中实现国际化(i18n)

    javascript国际化 朱利安· 莫茨 ( Julian Motz) , 帕纳约提斯· 维利萨拉科斯 ( Panayiotis Velisarakos) , 菲尔丹 ·史蒂芬 ( Vildan S ...

  9. 如何在JavaScript中实现国际化(i18n)

    朱利安· 莫茨 ( Julian Motz) , 帕纳约提斯· 维利萨拉科斯 ( Panayiotis Velisarakos) , 维尔丹 ·史蒂芬 ( Vildan Softic)和蒂姆·塞维里安 ...

最新文章

  1. java中的注解(二)
  2. 使用Comet4j实现消息推送
  3. PyCharm的隐藏技巧(Tips)-快捷键等积累
  4. 20135320赵瀚青LINUX第十八章读书笔记
  5. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...
  6. 电脑基础操作_苹果电脑基础操作,和使用须知
  7. Spring MVC源码——Servlet WebApplicationContext
  8. 性能测试之LoadRunner11安装步骤
  9. java gui 打开另一个_从另一个Java服务启动Java GUI应用程序
  10. 华为联运游戏或应用审核驳回:点击登录进入游戏,未显示欢迎栏
  11. 笔记本和打印机不在一个网段,无线连接打印机的方法
  12. Catagory基础使用
  13. 世界上服务器最多的游戏,魔兽科普 国服人最多的几个服务器都什么来头
  14. bzoj-4318 OSU! 【数学期望】
  15. 【深度学习】04-01-自注意力机制(Self-attention)-李宏毅老师2122深度学习课程笔记
  16. 计算机用户域怎么删除,如何删除域内非活动计算机账号?
  17. 新入职一家公司如何快速进入工作状态
  18. 联系导师邮件如何写?要注意什么?
  19. 【C++】STL的简介
  20. python里的demo是什么意思_软件中的“DEMO” 是什么意思?游戏中的“DEMO呢?

热门文章

  1. SpringMVC笔记-尚硅谷(杨博超)
  2. linux做m3u8推流服务器,linux搭建nginx流服务器,OBS推流,VCL拉流播放
  3. 华大芯片时钟调试配置记录
  4. 贾樟柯赵涛宣布结婚:8月已领证 威尼斯拍婚照
  5. android的SP存储和SD卡存储
  6. Java对象内存布局和对象头
  7. 分布式系统 淘宝数据魔方技术架构解析
  8. 硬盘IDE AHCI模式的区别
  9. 我总结的经营理念,做人做事都该如此
  10. 用win7的NT6引导Ubuntu12.04手动设置方法和错误修复