Немного поздно, но так как вы не получили никакого внимания, так ..
Можно ли точно клонировать значение DateTime данным TimeSpan Типу
Ну, так как ваш пример работает ровно с DateTime.MinValue
имеет 0
как Ticks
. Это эквивалентно;
TimeSpan timeSpan = TimeSpan.FromTicks(((DateTime)startTimeValue)Ticks);
как оно отображается в формате ДД ММ ГГГГ ЧЧ ММ СС
Прежде всего, нет DD
, YYYY
и SS
как custom date and time format specifiers. Они представлены как dd
, yyyy
и ss
.
TimeSpan
совершенно отличается от DateTime
. Это временной интервал, но DateTime
является момент во времени. Как вы можете видеть, временной интервал не может иметь никаких частей месяца и года. В котором Calendar
? Не все каландры имеют 12 месяцев. В каком месяце точно? Сколько месяцев прошло 29 дней в GregorianCalender
? Или ChineseLunisolarCalendar
? Это зависит, правильно? Месяц и годы концепции неоднозначны для TimeSpan.
Но еще, вы можете форматировать ваш TimeSpan
в день, час, минуты и секунды с TimeSpan.ToString()
метод, как;
timeSpan.ToString(@"d\.hh\:mm\:ss")
В качестве лучшей альтернативы, вы можете использовать Nodatime, который имеет Period
класс и PeriodUnits
перечисления, которые вы можете вычислить их, как;
using System;
using NodaTime;
public class Program
{
public static void Main()
{
LocalDate start = new LocalDate(2010, 11, 20);
LocalDate end = new LocalDate(2015, 7, 13);
Period period = Period.Between(start, end,
PeriodUnits.Months | PeriodUnits.Years);
Console.WriteLine("{0} - {1}", period.Months, period.Years); // 7 - 4
}
}
Почему вы заботитесь о количестве времени, которое прошло с полуночи первого января 1 года нашей эры? У вас есть дата и время, а не время, поэтому почему бы не использовать для него тип DateTime? Особенно, если вы собираетесь конвертировать его в строку в любом случае. – Blorgbeard
Возможно, вы хотите преобразовать startTimeValue в формат «DD MM YYYY HH MM SS» и для этого использовать startTimeValue.toString («dd MM yyyy HH mm ss»). Если нет, объясните свое требование, чтобы сделать его более понятным. – ATP
Мне нужно вставить значение datetime в db, но тип данных в db предоставляется как Timespan. Теперь я не могу изменить тип db, пытаясь выполнить manupulate через код. – Darey