在javascript中格式化字符串中的日期

时间:2012-06-01 04:39:40

标签: javascript html date

我有一个字符串,其中有一个日期,我无法转换它。

var startDate = "March-09-2010"; 
var convertedStartDate = new Date(startDate); 
var month = convertedStartDate.getMonth() + 1 
var day = convertedStartDate.getDay(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = month + "-" + day + "-" + year; 
alert(shortStartDate);

我希望如此将 2010年3月9日转换为 09-03-10 (DD-MM-YY)

任何人都知道我做错了什么?

7 个答案:

答案 0 :(得分:1)

试试这个:

var dt=Date.parse(Yourstring);

formatDate('DD-MM-YY',dt);

请检查此Date.parse

答案 1 :(得分:1)

var startDate = "March-09-2010"; 
var convertedStartDate = new Date(startDate.replace(/-/g, "/")); // replace hyphen with slash
var month = convertedStartDate.getMonth() + 1 
var date = convertedStartDate.getDate(); 
var year = convertedStartDate.getFullYear(); 
var shortStartDate = date + "-" + month + "-" + year; 
alert(shortStartDate);

演示:http://jsfiddle.net/BjnBW/

答案 2 :(得分:0)

您的日期字符串格式不正确。有关正确的格式,请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

试试这个或jsfiddle

var startDate = "March-09-2010";
var tmp = startDate.split('-');
tmp.splice(1, 0, ',');
var convertedStartDate = new Date(tmp.join(' '));
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDate();
var year = convertedStartDate.getFullYear();
var shortStartDate = ('0' + day).slice(-2) + "-" + ('0' + month).slice(-2) + "-" + year;
alert(shortStartDate);

答案 3 :(得分:0)

检查你的语法稍微修改了你的代码,然后根据它修改它---

var startDate = "March/09/2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDate();
var year = convertedStartDate.getFullYear();
var shortStartDate = day+ "-" + month+ "-" + year;
alert(shortStartDate);

答案 4 :(得分:0)

使用getDateFromFormat()将字符串转换为javascript中的日期。

点击此链接获取更多帮助:http://www.mattkruse.com/javascript/date/

答案 5 :(得分:0)

var shortStartDate = 
  Globalize.format(Globalize.parseDate(startDate, 'MMMM-dd-yyyy'), 'dd-MM-yy');

使用某些库进行转换,因为内置的Date.parse()与实现有关。它取决于系统区域设置它接受的格式。

上面的代码使用Globalize.js,它可以处理大量的日期格式,包括具有不同语言的月份名称的格式(默认为英语)。

答案 6 :(得分:0)

您需要将'March'转换为数字。一种方法是使用此Array扩展,以便能够从月份名称中检索月份编号:

Array.prototype.enum = function(){
     var obj = {};
     for (var i=0; i<this.length; (i+=1)) {
        obj[this[i]] = i;
     }
     this.enum = obj;
     return this;
};

现在,创建一个包含月份名称的数组

var months = ('January,February,March,April,May,June,July,'+
             'August,September,October,November,December').split(',')
              .enum();

现在你重写你的日期:

var startDate = "March-09-2010".split(/\-/),
    month     = months.enum[startDate[0]]+1;
startDate     = [startDate[1],
                 month < 10 ? '0'+month : month,
                 startDate[2]].join('-');
//=> startDate now is: '09-03-2010'