2016-02-15 1 views
-3

Мы js код, который преобразует datetime в определенный формат, который, как показано ниже:Эквивалент C# код, чтобы получить DATETIME Отформатируйте

var dob=new Date("01/16/1989") 
var ms=(dob.getTime()/1000-dob.getTimeZoneOffset()*60) 

выход в мс - 600912000

Она возвращает время даты с некоторыми milliseconds format. Не мог понять, что на самом деле это делает. Я попытался повторить то же самое в c#, но получал

Invalid бросок от 'DateTime' до 'Int32'

Вот что я пробовал:

private static string GetFormatted(DateTime date) 
{ 
    var time = Convert.ToInt32(date.ToUniversalTime())/1000; 
    var timezoneoffset = Convert.ToInt32(TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow)) * 60; 
    return Convert.ToString(time - timezoneoffset); 
} 

Какую часть должна Я изменяю код выше, чтобы получить тот же результат, что и в js?

+0

Что будет 'мс 'именно как результат? –

+0

'DateTime.Ticks'? – Alex

+0

Не могли бы вы дать ясный пример ввода и вывода, которые вы ожидаете увидеть? – Alex

ответ

4

JS getTime возвращает количество миллисекунд с 1970/01/01. Так/1000 дает секунды. Наконец getTimeZoneOffset дает разницу с UTC в течение нескольких минут, но при переходе на C#, когда источник и дата сравнения имеют один и тот же часовой пояс, преобразование может быть пропущена, и я думаю, что следующий будет достаточно:

date.Subtract(new DateTime(1970,1,1)).TotalSeconds 
+0

Perfect ... Большое спасибо .. :) –

Смежные вопросы