date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010"
date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010"
date = new Intl.DateTimeFormat('ar-EG').format(date); // Arabic date format: "٨/١٠/٢٠١٠"
如果您确实需要上面提到的格式,可以执行以下操作:
date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
var options = {year: "numeric", month: "short", day: "numeric"};
date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');
function dateToYMD(date) {
var d = date.getDate();
var m = date.getMonth() + 1; //Month from 0 to 11
var y = date.getFullYear();
return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
op格式可以如下生成:
function dateToYMD(date) {
var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var d = date.getDate();
var m = strArray[date.getMonth()];
var y = date.getFullYear();
return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"
注意:可以使用这些格式生成自定义输出>
new Date().toISOString().slice(0,10); //return YYYY-MM-DD
示例代码段:
console.log("1) "+ new Date().toDateString());
console.log("2) "+ new Date().toISOString());
console.log("3) "+ new Date().toJSON());
console.log("4) "+ new Date().toLocaleDateString());
console.log("5) "+ new Date().toLocaleString());
console.log("6) "+ new Date().toLocaleTimeString());
console.log("7) "+ new Date().toString());
console.log("8) "+ new Date().toISOString().slice(0,10));
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);
}
const d = new Date(2010, 7, 5);
const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);
const mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d);
const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);
console.log(`${da}-${mo}-${ye}`);
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()')
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
15条答案
按热度按时间xv8emn3q1#
我想你可以用非标准日期法
toLocaleFormat(formatString)
formatstring:与用户所期望的格式相同的格式字符串strftime()
函数在c。参考文献:
甲苯甲醛
strftime公司
i34xakig2#
好的,我们有一个叫做intl的东西,它在现在用javascript格式化日期时非常有用:
您的日期如下:
使用new date()更改为date,如下所示:
现在,您可以使用如下区域设置列表以任何方式格式化它:
如果您确实需要上面提到的格式,可以执行以下操作:
结果是:
有关更多信息,请参阅intl api和intl.datetimeformat文档。
lqfhib0f3#
@s码ébastien—可选的所有浏览器支持
文档:https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date/tolocaledatestring
2w3kk1z54#
如果对格式的控制比当前接受的答案稍微少一些,
Date#toLocaleDateString
可用于创建特定于区域设置的标准渲染。这个locale
以及options
参数允许应用程序指定应使用其格式约定的语言,并允许对呈现进行一些自定义。选项主要示例:
日期:
当天的表现。
可能的值为“数字”、“两位数”。
工作日:
工作日的表示。
可能的值为“窄”、“短”、“长”。
年份:
年度代表。
可能的值为“数字”、“两位数”。
月份:
月份的表示。
可能的值有“数字”、“两位数”、“窄”、“短”、“长”。
时间:
小时的表示法。
可能的值为“数字”、“两位数”。
分钟:分钟的表示形式。
可能的值为“数字”、“两位数”。
第二:
第二个的代表。
可能的值为“数字”,2位数。
所有这些钥匙都是可选的。您可以根据需求更改选项值的数量,这也将反映每个日期时间项的存在。
注意:如果您只想配置内容选项,但仍然使用当前区域设置,请传递
null
因为第一个参数将导致错误。使用undefined
相反。对于不同的语言:
“en-us”:指英语
“hi in”:印地语
“ja-jp”:日语
你可以使用更多的语言选项。
例如
您也可以使用
toLocaleString()
方法相同。唯一的区别是这个函数提供了不传递任何选项的时间。参考文献:
toLocaleString()
toLocaleDateString()
camsedfj5#
如果您已经在项目中使用jquery ui,可以这样做:
这里提供了一些datepicker日期格式选项。
pkwftd7m6#
自定义格式函数:
对于固定格式,一个简单的函数就可以完成这项工作。以下示例生成国际格式yyyy-mm-dd:
op格式可以如下生成:
注意:然而,扩展javascript标准库通常不是一个好主意(例如,将此函数添加到date的原型中)。
更高级的函数可以根据格式参数生成可配置的输出。
如果编写一个格式化函数太长,有很多库围绕着它。其他一些答案已经列举了它们。但日益增长的依赖性也起到了反作用。
标准ecmascript格式化函数:
由于ecmascript的较新版本
Date
类有一些特定的格式化函数:todatestring:依赖于实现,仅显示日期。
http://www.ecma-international.org/ecma-262/index.html#sec-date.prototype.todatestring
toisostring:显示iso8601日期和时间。
http://www.ecma-international.org/ecma-262/index.html#sec-日期.prototype.toisostring
tojson:json的字符串化器。
http://www.ecma-international.org/ecma-262/index.html#sec-date.prototype.tojson
tolocaledatestring:依赖于实现,是区域设置格式的日期。
http://www.ecma-international.org/ecma-262/index.html#sec-date.prototype.tolocaledatestring
tolocalstring:依赖于实现,一个区域设置格式的日期和时间。
http://www.ecma-international.org/ecma-262/index.html#sec-date.prototype.toLocalString
tolocaletimestring:依赖于实现,是区域设置格式的时间。
http://www.ecma-international.org/ecma-262/index.html#sec-date.prototype.tolocaletimestring
tostring:date的通用tostring。
http://www.ecma-international.org/ecma-262/index.html#sec-日期.prototype.tostring
注意:可以使用这些格式生成自定义输出>
示例代码段:
指定标准函数的区域设置:
上面列出的一些标准函数取决于语言环境:
toLocaleDateString()
toLocaleTimeString()toLocalString()
这是因为不同的文化使用不同的格式,并以不同的方式表达他们的日期或时间。默认情况下,函数将返回在其运行的设备上配置的格式,但这可以通过设置参数(ecma-402)来指定。这个
option
第二个参数,允许在所选区域设置内配置更具体的格式。例如,月份可以显示为全文或节略。示例代码段:
有关区域设置的一些良好做法:
大多数人不喜欢他们的日期以外国人的格式出现,因此,尽可能保留默认的区域设置(在任何地方都设置“en-us”)。
实现从utc到utc的转换可能具有挑战性(考虑到dst、时区不是1小时的倍数等)。尽可能使用经过良好测试的库。
不要假设语言环境与一个国家相关:几个国家有很多语言环境(加拿大、印度等)
避免通过非标准方式检测区域设置。在这里,您可以了解多个陷阱:检测键盘布局、按地理位置检测区域设置等。。
7eumitmz7#
使用date.format库:
退货:
npm上的日期格式
http://jsfiddle.net/phzr7/1/
rbpvctlc8#
你应该看看date.js。它为处理日期添加了许多方便的帮助程序,例如,在您的案例中:
入门:http://www.datejs.com/2007/11/27/getting-started-with-datejs/
lvmkulzt9#
好吧,我想要的是将今天的日期转换成mysql友好的日期字符串,比如2012-06-23,并在我的一个查询中使用该字符串作为参数。我找到的简单解决方案是:
请记住,上述解决方案没有考虑到您的时区偏移。
您可以考虑改用此函数:
这将为您提供正确的日期,以防您在一天的开始/结束时执行此代码。
例子:http://jsfiddle.net/simo/sapuhzmm/
日期.toisostring
日期.tojson
字符串.切片
c9x0cxw010#
如果需要使用纯javascript快速格式化日期,请使用
getDate
,getMonth + 1
,getFullYear
,getHours
以及getMinutes
:或者,如果需要用零填充:
relj7zay11#
在现代浏览器(*)中,您只需执行以下操作:
如果今天(1月24日)执行输出ᵗʰ, 2016):
(*)根据mdn,“现代浏览器”是指chrome 24+、firefox 29+、互联网 探险家 11,边缘 12岁以上,歌剧院 15+和safari夜间建造。
yiytaume12#
对于自定义分隔日期格式,必须从
DateTimeFormat
对象(这是ecmascript国际化api的一部分),然后手动创建一个包含所需分隔符的字符串。为此,您可以使用
DateTimeFormat#formatToParts
. 您可以分解数组,但这并不理想,因为数组输出取决于区域设置:最好将数组缩小为一个对象:
你也可以把
DateTimeFormat
逐一使用DateTimeFormat#format
,但请注意,在使用此方法时,从2020年3月起,ecmascript实现中存在一个错误,即在分钟和秒上出现前导零(通过上述方法可以避免此错误)。在处理日期和时间时,通常值得使用一个库(例如moment.js、luxon),因为该字段有许多隐藏的复杂性。
请注意,ie10不支持上述解决方案中使用的ecmascript国际化api(2020年2月全球浏览器市场份额为0.03%)。
tyg4sfes13#
一行请求的格式-没有库和日期方法,只有regex:
在我的测试中,这在主要浏览器(chrome、safari、firefox和ie)中都能可靠地工作,正如@robg所指出的,date.prototype.tostring()的输出依赖于实现,因此对于国际或非浏览器实现,只需测试输出,以确保它在javascript引擎中正常工作。您甚至可以添加一些代码来测试字符串输出,并在执行regex替换之前确保它与您期望的匹配。
jvlzgdj914#
打包的solution:luxon
如果您想使用一个解决方案来适应所有人,我强烈建议您使用luxon(moment.js的一个现代化版本),它还可以在许多地区/语言中进行格式化,并提供大量其他功能。
luxon托管在moment.js网站上,由moment.js开发人员开发,因为moment.js有开发人员想要解决但无法解决的限制。
要安装:
npm install luxon
或者yarn add luxon
(其他请访问链接)zqdjd7g915#
纯javascript是小型onetimer的最佳选择。
另一方面,如果你需要更多的约会内容,momentjs是一个很好的解决方案。
例如: