Как конвертировать Javascript datetime в C # datetime? - PullRequest
46 голосов
/ 15 июля 2011

Я читал, что если вы хотите преобразовать даты JavaScript в даты C #, вы должны использовать getTime(), а затем добавить этот результат в C # DateTime.

Предположим, у меня есть время JavaScript:

Date {Tue Jul 12 2011 16:00:00 GMT-0700 (Pacific Daylight Time)}

Отображается до 1310522400000 миллисекунд

var a = new DateTime(1970, 01, 01).AddMilliseconds(1310522400000);

// result
7/13/2011 2:00:00 AM

Так что это неправильно.Я не уверен, что мне нужно делать.

Ответы [ 16 ]

0 голосов
/ 28 февраля 2018

Вы также можете отправить время Js в C # с помощью библиотеки Moment.js:

JavaScript: var dateString = moment(new Date()).format('LLLL')

C #: DateTime.Parse(dateString);

0 голосов
/ 09 ноября 2017

ОБНОВЛЕНИЕ : В .NET версии 4.6 вместо этого используется FromUnixTimeMilliseconds метод структуры DateTimeOffset :

DateTimeOffset.FromUnixTimeMilliseconds(1310522400000).DateTime
0 голосов
/ 28 октября 2015

JS:

 function createDateObj(date) {
            var day = date.getDate();           // yields 
            var month = date.getMonth();    // yields month
            var year = date.getFullYear();      // yields year
            var hour = date.getHours();         // yields hours 
            var minute = date.getMinutes();     // yields minutes
            var second = date.getSeconds();     // yields seconds
            var millisec = date.getMilliseconds();
            var jsDate = Date.UTC(year, month, day, hour, minute, second, millisec);
            return jsDate;
        }

JS:

var oRequirementEval = new Object();
var date = new Date($("#dueDate").val());

CS:

requirementEvaluations.DeadLine = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
    .AddMilliseconds(Convert.ToDouble( arrayUpdateRequirementEvaluationData["DeadLine"]))
    .ToLocalTime();
0 голосов
/ 08 сентября 2015

В ответе Харуна были некоторые ошибки, которые исправляются ниже:

1) дата, когда харун использовал getDay(), что неверно должно быть getDate()

2) getMonth() дает на один месяц меньше, чем фактический месяц, поэтому мы должны увеличить его на 1, как показано ниже

var date = new Date();
var day = date.getDate();           // yields 
var month = date.getMonth() + 1;    // yields month
var year = date.getFullYear();      // yields year
var hour = date.getHours();         // yields hours 
var minute = date.getMinutes();     // yields minutes
var second = date.getSeconds();     // yields seconds

// After this construct a string with the above results as below
var time = day + "/" + month + "/" + year + " " + hour + ':' + minute + ':' + second; 

Передайте эту строку функции codebehind и примите ее как строковый параметр. Используйте DateTime.ParseExact() в codebehind для преобразования этой строки в DateTime следующим образом:

DateTime.ParseExact(YourString, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

Это сработало для меня! Надеюсь, это поможет вам тоже.

0 голосов
/ 03 сентября 2012

JavaScript (HTML5)

function TimeHelper_GetDateAndFormat() {
    var date = new Date();

    return MakeValid(date.getDate()).concat(
        HtmlConstants_FRONT_SLASH,
        MakeValid(date.getMonth() + 1),
        HtmlConstants_FRONT_SLASH,
        MakeValid(date.getFullYear()),
        HtmlConstants_SPACE,
        MakeValid(date.getHours()),
        HtmlConstants_COLON,
        MakeValid(date.getMinutes()),
        HtmlConstants_COLON,
        MakeValid(date.getSeconds()));
}

function MakeValid(timeRegion) {
    return timeRegion !== undefined && timeRegion < 10 ? ("0" + timeRegion).toString() : timeRegion.toString();
}

C #

private const string DATE_FORMAT = "dd/MM/yyyy HH:mm:ss";

public DateTime? JavaScriptDateParse(string dateString)
{
    DateTime date;
    return DateTime.TryParseExact(dateString, DATE_FORMAT, CultureInfo.InvariantCulture, DateTimeStyles.None, out date) ? date : null;
}
0 голосов
/ 15 июля 2011

Я думаю, вы можете использовать TimeZoneInfo .... для преобразования даты и времени ....

    static void Main(string[] args)
    {
        long time = 1310522400000;
        DateTime dt_1970 = new DateTime(1970, 1, 1);
        long tricks_1970 = dt_1970.Ticks;
        long time_tricks = tricks_1970 + time * 10000;
        DateTime dt = new DateTime(time_tricks);

        Console.WriteLine(dt.ToShortDateString()); // result : 7/13
        dt = TimeZoneInfo.ConvertTimeToUtc(dt);

        Console.WriteLine(dt.ToShortDateString());  // result : 7/12
        Console.Read();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...