我无法从表单上的日期时间字段中获取小时和分钟部分。
var date = Xrm.Page.data.entity.attributes.get("createdon").getValue();
我可以在返回的对象上使用getDate(),getMonth()和GetFullYear()方法,但我无法得到小时和分钟数据。日期对象显示“Tue Dec 25 11:47:44 UTC + 0200 2012”,所以时间就在那里。是获得小时/分钟对该值进行一些丑陋的子串操作的唯一方法吗?
提前致谢。
答案 0 :(得分:3)
您可以在 Date 对象上使用 getHours 和 getMinutes 。
var date = new Date();
var time = date.getHours() + ":" + date.getMinutes();
现在,您只需要替换 date 的值,因为在我的示例中它是当前时间点,并且您从字段中获取它。
您可能还需要考虑缩短语法。我现在不在电脑前(不是那个电脑),但我相信你可以这样做。
var date = Xrm.Page.getAttribute("createdon").getValue();
令人惊奇的是 - 无论JavaScript编码多少。五分钟后,一切都从头脑中消失了。这就像语法是为了内存抵抗。 :)
你应该不使用 substring 或 regex 。 JavaScript源代码往往是丑陋和混乱的方式。没有必要让它变得更糟,更难以理解。
至于正则表达式 - 程序员有一个问题需要解决。所以他想 - “我知道,我会用 RegEx ”。然后他有两个问题。
答案 1 :(得分:3)
var DateTimeFormatString ="hh:MM:ss";
// Formats the date to CRM format
function dateToCRMFormat(date) {
return dateFormat(date, DateTimeFormatString );
}
// Formats the date into a certain format
function dateFormat(date, format) {
var f = "";
try {
f = f + format.replace(/dd|mm|yyyy|MM|hh|ss|ms|APM|\s|\/|\-|,|\./ig,
function match() {
switch (arguments[0]) {
case "dd":
var dd = date.getDate();
return (dd < 10) ? "0" + dd : dd;
case "mm":
var mm = date.getMonth() + 1;
return (mm < 10) ? "0" + mm : mm;
case "yyyy": return date.getFullYear();
case "hh":
var hh = date.getHours();
return (hh < 10) ? "0" + hh : hh;
case "MM":
var MM = date.getMinutes();
return (MM < 10) ? "0" + MM : MM;
case "ss":
var ss = date.getSeconds();
return (ss < 10) ? "0" + ss : ss;
case "ms": return date.getMilliseconds();
case "APM":
var apm = date.getHours();
return (apm < 12) ? "AM" : "PM";
default: return arguments[0];
}
});
}
catch (err) {
}
return f;
}
进行测试
var time= Xrm.Page.getAttribute("createdon").getValue();
alert("Time: " + dateToCRMFormat(time));