Crm 2011从表格上的DateTime字段获取时间

时间:2012-12-25 10:21:19

标签: javascript forms datetime dynamics-crm-2011 crm

我无法从表单上的日期时间字段中获取小时和分钟部分。

var date = Xrm.Page.data.entity.attributes.get("createdon").getValue();

我可以在返回的对象上使用getDate(),getMonth()和GetFullYear()方法,但我无法得到小时和分钟数据。日期对象显示“Tue Dec 25 11:47:44 UTC + 0200 2012”,所以时间就在那里。是获得小时/分钟对该值进行一些丑陋的子串操作的唯一方法吗?

提前致谢。

2 个答案:

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