Convert C# DateTime to Javascript Date

后端 未结 2 522
暗喜
暗喜 2021-02-01 01:35

I have a function in Javascript that receives a C# DateTime from MVC. If the date is null it should return \"-\", if it\'s a valid date it should return the formated date.

相关标签:
2条回答
  • 2021-02-01 02:17

    I use the following to pass a Javascript Date into C#:

    var now = new Date();
    var date = (now.getTime() / 86400000) - (now.getTimezoneOffset() / 1440) + 25569;
    

    So if you get the number of milliseconds from C#, it should be something like this:

    var csharpmilliseconds;
    var now = new Date();
    var date = new Date((csharpmilliseconds + (now.getTimezoneOffset() / 1440) - 25569) * 86400000);
    
    0 讨论(0)
  • 2021-02-01 02:24

    Given the output you're stuck with, I can't think of any better way to catch a DateTime of 0 on the javascript side.

    Date.parse should work for your parsing needs, but it returns number of milliseconds, so you need to wrap a Date constructor around it:

    var date = new Date(Date.parse(myCSharpString));
    

    For the return date, you simply want

    date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
    

    (date.getMonth and date.getDate are 0-indexed instead of 1-indexed.)

    Fiddle: http://jsfiddle.net/GyC3t/

    EDIT Thanks to JoeB's catch, let me do a correction. The date.getMonth() function is 0-indexed, but the date.getDate() function is 1-indexed. The fiddle was "working" with the +1 because date.getMonth works in local time, which is before UTC. I didn't properly check the docs, and just added 1, and it worked with the fiddle.

    A more proper way to do this is:

    For the return date, you simply want

    date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate());
    

    (date.getMonth is 0-indexed while date.getDate is 1-indexed but susceptible to time-zone differences.)

    Fiddle: http://jsfiddle.net/GyC3t/25/

    0 讨论(0)
提交回复
热议问题