Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Как преобразовать целое число в дату (DateTime) и наоборот? А также в чём отличия DateTime и Stopwatch, кроме точности расчёта?

Вот, например, у меня есть целое число 9847748582984. Как его конвертировать в дату?
А также напишите, пожалуйста, все преимущества и недостатки DateTime и Stopwatch.
  • Вопрос задан
  • 856 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
все преимущества и недостатки DateTime и Stopwatch.

Звучит как "все преимущества и недостатки автомобиля и электрочайника"

Судя по тому что вы их сравниваете - видимо вы хотите измерить длительность какой-то операции.

Если нужно точно измерить короткий промежуток времени, то лучше использовать Stopwatch, тк он использует HPET

Если нужно приблизительно (с точностью до мс) померить разницу во времени между двумя событиями, например пользователю отобразить что-то типа "сообщение отправлено 5 минут назад" - лучше использовать DateTime, а лучше даже DateTimeOffset.

Если вы хотите оценить производительность кода, то лучше использовать BenchmarkDotNet.

Вот, например, у меня есть целое число 9847748582984. Как его конвертировать в дату?

Для начала стоило бы узнать, что это число означает, но методом тыка определяем, что это ...
А нифига не определяем. Ни один из способов инициализации времени не даёт ничего адекватного.
var dt1 = new DateTime(9847748582984).Dump("dt1"); // 12.01.0001 09:32:54
var dt2 = DateTime.FromBinary(9847748582984).Dump("dt2"); // 12.01.0001 09:32:54
var dt3 = DateTime.FromFileTime(9847748582984).Dump("dt3"); // 12.01.1601 14:32:54
//var dt4 = DateTime.FromOADate(9847748582984).Dump("dt4"); // Invalid
//var dt5 = DateTimeOffset.FromUnixTimeSeconds(9847748582984).Dump("dt5"); // Out of range
var dt6 = DateTimeOffset.FromUnixTimeMilliseconds(9847748582984).Dump("dt6"); //23.01.2282 13:43:02 +00:00

Если кто знает ещё форматы времени - дополняйте

PS: https://habr.com/ru/post/226279/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы