2012-06-01 141 views
1

我有一个字符串,它有一个日期,我不能够将其转换。格式日期从字符串在javascript

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); 

我想它,所以它转换月-09-201010年9月3日(DD-MM-YY)

任何人都知道我做错了吗?

回答

1

试试这个:

var dt=Date.parse(Yourstring); 

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

请检查该Date.parse

+0

对象函数日期(){[本地代码]}没有方法“解析” ...那是错误 –

+0

@RajatSinghal对不起编辑的答案。 – Vinod

+0

1. *对象1268089200000没有方法'tostring'*。 2.修正后:* toString()基数参数必须介于2和36 *之间。 – KooiInc

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); 
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); 
+0

问题是在startDate不符合标准 – swapnesh

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/

+0

它不起作用。 “2010年3月9日”仍然不是有效的日期字符串。 “2010年3月9日”是有效的日期字符串。 –

+0

编辑..请检查现在。 – Diode

+0

这只适用于英文月份名称。 – KooiInc

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

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

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

0

您需要将'March'转换为数字。一种方法是使用这个数组扩展到能够检索从一个月名称的月份数:

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'