Подскажите почему так получается?

backoff

Client
Регистрация
20.04.2015
Сообщения
5 927
Благодарностей
6 389
Баллы
113
имеем

76787

дата: 07.05.2021 16:12
перевели в юникс: 1620403920
определяем в человеко днях: 0 д. -2 ч. -50 мин. -14 сек.

откуда минус?
по идее все должно быть по нулям, а минуты = 14

перевожу дату в юникс так:
C#:
DateTime dt = DateTime.Parse(project.Variables["lastActive"].Value);
int unixTime = (int)(dt - new DateTime(1970, 1, 1)).TotalSeconds;
return unixTime;
перевожу юник в часы так:
C#:
int x = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
int y = int.Parse(project.Variables["unixdate"].Value);
var ts = TimeSpan.FromSeconds(x - y);
return string.Format("{0} д. {1} ч. {2} мин. {3} сек.", ts.Days, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
У тебя логика неверная.
в первом снипете считаешь от даты. а во втором от UtcNow , это разные вещи.
надо считать в одном формате , от DateTime.Now например.

C#:
int x = (int)(DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds;
project.SendInfoToLog($"{x}");
int y = int.Parse(project.Variables["unixdate"].Value);
project.SendInfoToLog($"{y}");
var ts = TimeSpan.FromSeconds(x - y);
return string.Format("{0} д. {1} ч. {2} мин. {3} сек.", ts.Days, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 927
Благодарностей
6 389
Баллы
113

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Даты нужно сравнить?
C#:
DateTime date1 = DateTime.ParseExact(project.Variables["A_time"].Value, "dd.MM.yyyy.H:mm", CultureInfo.InvariantCulture);
DateTime date2 = DateTime.ParseExact(project.Variables["B_time"].Value, "dd.MM.yyyy.H:mm", CultureInfo.InvariantCulture);

int result = Int32.Parse((date1 - date2).TotalMinutes.ToString());
return result;
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)