我有一个约会,比如 2010 年 1 月 9 日星期一
我现在想将其转换为
2010年1月9日 月/日/年
我尝试这样做
var startDate = "Monday, January 9, 2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDay();
var year = convertedStartDate.getFullYear();
var shortStartDate = month + "/" + day + "/" + year;
但是它一定认为日期的格式不同,因为日期返回 1 而不是 9。
给你:
(new Date()).toLocaleDateString('en-US');
就是这样!!
您可以在任何日期对象上使用它
假设..你有一个名为“currentDate”的对象
var currentDate = new Date(); //use your date here
currentDate.toLocaleDateString('en-US'); // "en-US" gives date in US Format - mm/dd/yy
(或)
如果您想要本地格式,那么
currentDate.toLocaleDateString(); // gives date in local Format
内置
toLocaleDateString()
可以完成这项工作,但它会删除日期和月份的前导 0,因此我们会得到类似“1/9/1970”的内容,在我看来这并不完美。为了获得正确的格式MM/DD/YYYY
,我们可以使用类似的东西:
new Date(dateString).toLocaleDateString('en-US', {
day: '2-digit',
month: '2-digit',
year: 'numeric',
})
替代方案:我们可以使用具有良好的
浏览器支持的
Intl.DateTimeFormat
获得类似的行为。与 toLocaleDateString()
类似,我们可以传递带有选项的对象:
const date = new Date('Dec 2, 2021') // Thu Dec 16 2021 15:49:39 GMT-0600
const options = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
}
new Intl.DateTimeFormat('en-US', options).format(date) // '12/02/2021'
getDay()
方法返回一个数字来指示一周中的哪一天(0 = 星期日,1 = 星期一,... 6 = 星期六)。使用 getDate()
返回一个月中的某一天的数字:
var day = convertedStartDate.getDate();
如果你愿意,你可以尝试在
Date
对象的原型中添加自定义格式函数:
Date.prototype.formatMMDDYYYY = function(){
return (this.getMonth() + 1) +
"/" + this.getDate() +
"/" + this.getFullYear();
}
完成此操作后,您可以在
formatMMDDYYY()
对象的 any 实例上调用 Date
。当然,这只是一个非常具体的示例,如果您确实需要它,您可以编写一个通用格式化函数,该函数将基于格式化字符串来执行此操作,有点像 java 的 SimpleDateeFormat (http://java.sun.com /j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html)
(切线:
Date
对象总是让我感到困惑...getYear()
与getFullYear()
,getDate()
与getDay()
,getDate()
的范围从1..31开始,但getMonth()
从0..11开始
乱七八糟,总要偷看一下。 http://www.w3schools.com/jsref/jsref_obj_date.asp)
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
document.getElementById("demo").innerHTML = d.toLocaleDateString();
date.toLocaleDateString('en-US')
效果很好。 以下是有关它的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
虽然这个问题很久以前就发布了,但正确的方法是:
Intl.DateTimeFormat("en").format(new Date())
无论如何,Intl(国际)对象有很多选项,您可以传递给 like 来强制使用两个数字等。 大家可以看一下这里
我希望日期显示在 type='time' 字段中。
正常转换会跳过零,表单字段不显示值,并在控制台中发出错误,指出格式需要为 yyyy-mm-dd。
因此我添加了一个小声明(检查)?(true):(false)如下:
makeShortDate=(date)=>{
yy=date.getFullYear()
mm=date.getMonth()
dd=date.getDate()
shortDate=`${yy}-${(mm<10)?0:''}${mm+1}-${(dd<10)?0:''}${dd}`;
return shortDate;
}
我认为这是访问 DD/MM/YYYY 格式日期的更短方法:
console.log(new Intl.DateTimeFormat(['ban', 'id']).format(new Date()));
即使您只能获得一天的一部分,例如“下午、早上、晚上等..”
Intl.DateTimeFormat("en", {dateStyle:'short'}).format(new Date())
输出:
“9/5/24”
如果您也想要时间:
Intl.DateTimeFormat("en", {dateStyle:'short', timeStyle: 'short'}).format(new Date())
输出:
“24 年 9 月 5 日上午 10:09”
我能够做到这一点:
var dateTest = new Date("04/04/2013");
dateTest.toLocaleString().substring(0,dateTest.toLocaleString().indexOf(' '))
04/04/2013 仅用于测试,替换为您的日期对象。
您可以使用我的 date-shortcode 包轻松完成此操作:
const dateShortcode = require('date-shortcode')
var startDate = 'Monday, January 9, 2010'
dateShortcode.parse('{M/D/YYYY}', startDate)
//=> '1/9/2010'
试试这个:
new Date().toLocaleFormat("%x");