我需要以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等,但这会在显示时帮助我,但回帖时会引起严重的问题。
所以任何缩短上述代码的方法都是值得赞赏的,欢迎任何替代方案。
答案 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 2822和ECMAScript 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"