首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.NET DateTime转换为Javascript日期

问将.NET DateTime转换为Javascript日期
EN

Stack Overflow用户
提问于 2013-02-14 01:18:32
回答 4查看 2.9K关注 0票数 4

我有一个WCF服务,它为我的javascript提供一些日期。我想要操作日期,但它到达javascript时如下所示:

代码语言:javascript
复制
/Date(1361145600000+0000)/

我知道这是自1970/01/01以来的毫秒数,但我还没有弄清楚如何将其转换为javascript日期。

我是否需要使用正则表达式或修剪文本来提取毫秒数,然后像这样使用它:

代码语言:javascript
复制
new Date(miliseconds)

肯定有更简单的方法吧?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-14 02:17:04

如果'+0000‘是标准时区偏移量,则前两位是小时,后两位是分钟。

假设它并不总是'0000'-

您需要将UTC的毫秒差加(或减)到第一个整数部分,以返回正确的日期。

代码语言:javascript
复制
   function timeconvert(ds){
        var D, dtime, T, tz, off,
        dobj= ds.match(/(\d+)|([+-])|(\d{4})/g);
        T= parseInt(dobj[0]);
        tz= dobj[1];
        off= dobj[2];
        if(off){
            off= (parseInt(off.substring(0, 2), 10)*3600000)+
(parseInt(off.substring(2), 10)*60000);
            if(tz== '-') off*= -1;
        }
        else off= 0;
        return new Date(T+= off).toUTCString();
    }
    timeconvert('Date(1361145600000)+0000');

//返回值:(String UTC)

Mon,2013年2月18日00:00:00 GMT

如果日期总是 in UTC ('+0000'),你可以从字符串中提取有效数字--

代码语言:javascript
复制
    function timeconvert(ds){
        var d=ds.match(/(\d+)/)[1];
        return new Date(+d).toUTCString();
    }
    timeconvert('Date(1361145600000)+0000)');

// returned value: (String UTC)

Mon, 18 Feb 2013 00:00:00 GMT
票数 5
EN

Stack Overflow用户

发布于 2015-05-29 20:07:05

kennebec提出的代码有一个bug,其日期低于1970年1月1日。例如,日期(-124054000000+0300)为Wed Jan 26 1966 07:33:20

修复代码:http://output.jsbin.com/cejolu/3/edit?js,console

代码语言:javascript
复制
function timeconvert(ds){
    var D, dtime, T, tz, off,
        dobj = ds.match(/(-?\d+)|([+-])|(\d{4})/g);

    T = parseInt(dobj[0], 10);
    tz = dobj[1];
    off = dobj[2];

    if (off) {
        off = (parseInt(off.substring(0, 2), 10) * 3600000) + (parseInt(off.substring(2), 10) * 60000);
        if(tz == '-') off *= -1;
    }
    else off= 0;
    return new Date(T += off).toUTCString();
}

测试最新的更改:

代码语言:javascript
复制
console.log(timeconvert("Date(-124054000000+0300)"));
console.log(timeconvert('Date(1361145600000)+0000'));
console.log(timeconvert("Date(0+0300)"));
console.log(timeconvert("Date(-2+0200)"));
console.log(timeconvert("Date(-860000000000+1100)"));

/* Output */

"Wed, 26 Jan 1966 07:33:20 GMT"
"Mon, 18 Feb 2013 00:00:00 GMT"
"Thu, 01 Jan 1970 03:00:00 GMT"
"Thu, 01 Jan 1970 01:59:59 GMT"
"Thu, 01 Oct 1942 18:06:40 GMT"
票数 3
EN

Stack Overflow用户

发布于 2013-02-14 01:48:57

您可以使用如下代码创建javascript日期:

代码语言:javascript
复制
var d = new Date("1/1/2012")

因此,只需以以下格式提供您的.Net日期:

代码语言:javascript
复制
new DateTime().ToString("M/d/yyyy")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14859176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档