none
使用JavaScript访问ListData.svc的问题 RRS feed

  • 问题

  • 返回的日期是这样的"/Date(1332400598000)/",SP中应该有方法进行转换吧?

    更新日期时应该用什么格式呢?

    更新时能让日期取服务器时间吗?毕竟脚本取的是客户端时间。

    2012年4月17日 10:12

答案

  • Hi Xiao,

    关于你的问题,你可以通过Javascript转换你上面获取的日期为日期类型变量,并且可以将日期类型格式化为通常可读的日期。更新日期时,你需要传递日期类型变量进行更新,请参看下面的代码:
    var date = new Date(1332400598000);
    var strDate = formatDate(date);
    
    function formatDate(date) { //yyyy-MM-dd HH:mm:ss
        if (date instanceof Date) {
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            var d = date.getDate();
            var h = date.getHours();
            var i = date.getMinutes();
            var s = date.getSeconds();
            var ms = date.getMilliseconds();
            if (ms > 0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;
            if (h > 0 || i > 0 || s > 0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
            return y + '-' + m + '-' + d;
        }
        return '';
    }
    客户端脚本是可以获取服务器端日期的,建议你使用Ajax获取,下面有一段完整的Javascript Ajax获取服务器端时间的函数,你可以参考一下:
    function getServerTime() {
        //因程序执行耗费时间,所以时间并不十分准确,误差大约在2000毫秒以下
        var xmlHttp = false;
        //获取服务器时间
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                xmlHttp = false;
            }
        }
    
        if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
            xmlHttp = new XMLHttpRequest();
        }
    
        xmlHttp.open("GET", "null.txt", false);
        xmlHttp.setRequestHeader("Range", "bytes=-1");
        xmlHttp.send(null);
    
        var severTime = new Date(xmlHttp.getResponseHeader("Date"));
        return severTime;
    }

    Thanks,
    Lhan Han



    2012年4月18日 3:16
    版主
  • Hi Xiao,

    在javascript中你可以用date.getTime()来获取日期的时间数字。其实这些只是日期的不同表现形式,你只要使用日期类型变量,或者能被识别并转换成日期类型的字符串或数字串就可以了。

    Thank,
    Lhan Han
    2012年4月19日 1:39
    版主

全部回复

  • Hi Xiao,

    关于你的问题,你可以通过Javascript转换你上面获取的日期为日期类型变量,并且可以将日期类型格式化为通常可读的日期。更新日期时,你需要传递日期类型变量进行更新,请参看下面的代码:
    var date = new Date(1332400598000);
    var strDate = formatDate(date);
    
    function formatDate(date) { //yyyy-MM-dd HH:mm:ss
        if (date instanceof Date) {
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            var d = date.getDate();
            var h = date.getHours();
            var i = date.getMinutes();
            var s = date.getSeconds();
            var ms = date.getMilliseconds();
            if (ms > 0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;
            if (h > 0 || i > 0 || s > 0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
            return y + '-' + m + '-' + d;
        }
        return '';
    }
    客户端脚本是可以获取服务器端日期的,建议你使用Ajax获取,下面有一段完整的Javascript Ajax获取服务器端时间的函数,你可以参考一下:
    function getServerTime() {
        //因程序执行耗费时间,所以时间并不十分准确,误差大约在2000毫秒以下
        var xmlHttp = false;
        //获取服务器时间
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                xmlHttp = false;
            }
        }
    
        if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
            xmlHttp = new XMLHttpRequest();
        }
    
        xmlHttp.open("GET", "null.txt", false);
        xmlHttp.setRequestHeader("Range", "bytes=-1");
        xmlHttp.send(null);
    
        var severTime = new Date(xmlHttp.getResponseHeader("Date"));
        return severTime;
    }

    Thanks,
    Lhan Han



    2012年4月18日 3:16
    版主
  • /_layouts/MicrosoftAjax.js中有Date.format

    试了一下基本只有日期型返回来是这样的格式,搞不懂,不过也不用考虑其它情况了,我是eval("new "+)

    /_layouts/SP.runtime.js中SP.DateTimeResult好像没干啥事

    还真是一直没注意返回头中带了日期

    那Date怎么变回那个数字呢1332400598000
    • 已编辑 Mr.Xiao 2012年4月18日 11:11 补充
    2012年4月18日 11:06
  • Hi Xiao,

    在javascript中你可以用date.getTime()来获取日期的时间数字。其实这些只是日期的不同表现形式,你只要使用日期类型变量,或者能被识别并转换成日期类型的字符串或数字串就可以了。

    Thank,
    Lhan Han
    2012年4月19日 1:39
    版主
  • 用OPTION替代GET应该是最快的吧

    2012年4月24日 6:55