从DD-MM-YY到DD / MM / YY的日期格式转换问题?

时间:2014-08-08 06:36:10

标签: jquery date datetime knockout.js

我需要以DD / MM / YYY格式显示所有日期。

我正在做这么糟糕的代码来实现我所需要的。这是不可取的。

从我的控制器中获取DateTime到我的ViewModel(js)。所以,我需要通过做一些格式来显示,这些格式化也以DD / MM-YY格式显示DateTime作为日期。

示例:

来自控制器我10-01-2014T00:00:00

在视图模型中,我需要像这样转换10/01/2014并显示。

这是我实现的方式,非常感谢任何替代方案。

var s = data.LicenseOneTimeList[k].CompletionDate; //s = 10-01-2014T00:00:00

var len = s.length;
var d = s.substring(0, 2);
var m = s.substring(3, len - 14);
var y = s.substring(6, len - 9);    
var dateformat = new Date(y, m, d);

var month = dateformat.getMonth() > 9 ? 
dateformat.getMonth() : ("0" + (dateformat.getMonth()));
var date = dateformat.getDate() > 9 ? dateformat.getDate(): ("0" + dateformat.getDate());

var convertedDate = date + "/" + month + "/" + dateformat.getFullYear();
                                                             List.CompletionDate(convertedDate);

List.CompletionDate() 10-01-2014

我有理由这样做。 最初我试图不分割代码,即使用子字符串,但如果我将日期时间传递给new date(我得到错误的结果。我尝试使用date.js等,但这会在显示时帮助我,但回帖时会引起严重的问题。

所以任何缩短上述代码的方法都是值得赞赏的,欢迎任何替代方案。

3 个答案:

答案 0 :(得分:1)

它将是日期string,因此无需转换为Date对象。所以我建议你简化

var s = data.LicenseOneTimeList[k].CompletionDate; //s = 10-01-2014T00:00:00
var dateTime_string = s.split("T");
var date_string = dateTime_string[0].replace(/-/g, "/"); // 10/01/2014

答案 1 :(得分:1)

我通常不会提倡这种方法,但如果您只需要以这种格式显示它(即您不需要执行任何日期计算),那么您可以保证它是&#39 ; s总是以确切的格式(dd-mm-yyyyThh:mm:ss)回来,你可以使用以下内容:

var convertedDate = s.substring(0, s.indexOf("T")).replace(/-/g,"/");

你尝试的Date构造函数有些原谅(在内部使用Date.parse()),但不幸的是你的字符串不是公认的格式之一。另请参阅RFC 2822ECMAScript Date Time String format

答案 2 :(得分:0)

new Date('10-01-2014').toLocaleDateString("en-US", {month: "2-digit", day:"2-digit", year: "numeric"})
"10/01/2014"