2016-02-12 3 views
0

Быстрый вопрос, у меня есть эта программа, которая дает мне секунды с 01.01.2000.Добавьте секунды до времени, чтобы рассчитать время

E.g. Секунды для 12.02.2016 11:23:55 будут примерно 508590531 секунд.

Есть ли способ, который задал секунды и дату начала, которая вычисляет дату окончания?

Я знаю, что я мог рассчитать минуты/дни/месяцы/годы, которые прошли вручную, а затем попытаться вычислить «endTime», но я должен был бы позаботиться о том, чтобы я не ошибался например, отсутствует високосный год.

Краткое определение просто совершенно ясно:

Start Date : 01.01.2000 
End Date: Current Date 
Time passed: Seconds passed between start date and end date 
+0

Возможный дубликат [Как добавить секунд Время в C#?] (Http://stackoverflow.com/questions/18786276/how-to-add-seconds-to-time-in-c) – Equalsk

+0

Кстати, '508590531' секунд после' 01.01.2000' полночь '12.02.2016 11: 08: 51' не' 12.02.2016 11: 23: 55'. –

+0

@Equalsk да, это тоже подводит мой вопрос: D –

ответ

3

Это легко. Просто добавьте секунды, не требуется волшебство или новое решение.

DateTime AddedFrom2000 = new DateTime(2000, 1, 1).AddSeconds(508590531); 
+0

Огромное спасибо !!! –

+0

Хороший ответ, но также обратите внимание на 'DateTimeKind'. Если ваше первоначальное значение предназначалось для секунд за полночь 2000-01-01 ** UTC **, тогда установите 'DateTimeKind.Utc' при создании' DateTime' здесь. Когда он сидит, этот код использует 'DateTimeKind.Unspecified', что прекрасно, если база действительно является« плавающим ». Это различие будет иметь значение, если вы используете результирующее значение в преобразовании сериализации или часовых поясах. –

3

Конечно.

Вы можете вычесть друг друга и использовать TimeSpan.TotalSeconds property;

var ts = DateTime.Now - new DateTime(2000, 1, 1); 
Console.WriteLine(ts.TotalSeconds); 

Если вы хотите получить его как int, вы можете явно привести его в качестве (int)ts.TotalSeconds.

Если у вас уже есть секунды, и вы хотите рассчитать на основе даты начала, вы можете использовать AddSeconds method;

var dt = new DateTime(2000, 1, 1).AddSeconds(508590531); // {12.02.2016 11:08:51} 
+0

Если я не ошибаюсь, ваш код вычисляет секунды, прошедшие с 01.01.2000. Я ищу что-то вроде 01.01.2000 + секунды = Дата –

+0

Это не то, о чем вы просите, по крайней мере, я понял то же самое, что @Soner – Pikoh

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