如何在javascript中将完整日期转换为短日期?

时间:2010-01-10 01:24:33

标签: javascript date formatting

我的日期是这个星期一,即2010年1月9日

我现在想将其转换为

1/9/2010 mm / dd / yyyy

我试图这样做

    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。

10 个答案:

答案 0 :(得分:47)

getDay()方法返回一个数字来表示星期几(0 =太阳,1 =星期一,... 6 =星期六)。使用getDate()返回月中某天的数字:

var day = convertedStartDate.getDate();

如果您愿意,可以尝试将自定义格式函数添加到Date对象的原型中:

Date.prototype.formatMMDDYYYY = function(){
    return (this.getMonth() + 1) + 
    "/" +  this.getDate() +
    "/" +  this.getFullYear();
}

执行此操作后,您可以在 formatMMDDYYY()对象的任何实例上调用Date。当然,这只是一个非常具体的例子,如果你真的需要它,你可以编写一个基于格式化字符串的泛型格式化函数,有点像java的SimpleDateeFormat(http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

(切线:Date对象总是让我感到困惑...... getYear() vs getFullYear()getDate() vs getDay()getDate()范围从1..31,但是getMonth()来自0..11

这是一团糟,我总是需要偷看。 http://www.w3schools.com/jsref/jsref_obj_date.asp

答案 1 :(得分:20)

你走了:

(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

答案 2 :(得分:4)

var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)"); 
document.getElementById("demo").innerHTML = d.toLocaleDateString();

答案 3 :(得分:1)

date.toLocaleDateString('en-US')效果很好。以下是有关它的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

答案 4 :(得分:1)

这是使用Moment.js

的好地方

JavaScript因处理日期不佳而臭名昭着。如果您只是像这样简单地附上日期,那么您可能会受到一些影响:

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;
  • 如果您的用户位于国际日期行的另一侧,则JavaScript会隐式添加DateTime偏移量,该偏移量可能会将日期推送到第二天。
    • 即。客户是+/- 12小时或更长时间
  • JavaScript不会为给出的附加案例提供完整的10个字符。
    • 即。您的服务可能是期待"短期日期&01; 01/01/2015'"但如果您只是按照上述情况进行追加,那么您最终会得到' 1/1/2015'

你应该使用Moment.js来处理这种情况。日期有大量的内置格式,您可以手动指定它们,而不会有添加日期时间偏移或格式与预期不同的风险。

例如: moment('01/01/2001').format('L'); 将导致' 01/01/1001'

jsfiddle

上查看此时刻.js沙箱

答案 5 :(得分:1)

我希望在 type='time' 字段中显示日期。

正常转换会跳过零,表单字段不显示值,并在控制台中提示格式需要为 yyyy-mm-dd 的错误。

因此,我添加了一个小语句 (check)?(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;
}

答案 6 :(得分:0)

您可以使用我的date-shortcode软件包轻松完成此操作:

const dateShortcode = require('date-shortcode')

var startDate = 'Monday, January 9, 2010'
dateShortcode.parse('{M/D/YYYY}', startDate)
//=> '1/9/2010'

答案 7 :(得分:0)

晚些时候参加聚会,toLocaleDateString()将删除日期和月份中的前导0,因此我们会得到类似“ 1/9/1970”的信息,在我看来这并不完美。要获得正确的格式MM/DD/YYYY,我们可以使用类似以下内容的方法:

new Date(dateString).toLocaleDateString('en-US', {
  day: '2-digit',
  month: '2-digit',
  year: 'numeric',
})

答案 8 :(得分:-1)

我能够用:

做到这一点
var dateTest = new Date("04/04/2013");
dateTest.toLocaleString().substring(0,dateTest.toLocaleString().indexOf(' '))

04/04/2013仅用于测试,替换为您的日期对象。

答案 9 :(得分:-7)

试试这个:

new Date().toLocaleFormat("%x");