Вычесть дату

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Вычесть дату ребята помогите пожалуйста как решить вычесть дату 19.01.2021 11:00 - 19.01.2021 19:00 задача выяснить количество часов
 
Последнее редактирование:

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
спасибо но я там такого не нашел
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Как вот такое посчитать? var x=21.01.2021 10:35:41; var y=20.01.2021 11:20:02; x-y;
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
а оно есть ! непомню 2 или 3 варианта

 

Vvafel

Client
Регистрация
24.12.2017
Сообщения
80
Благодарностей
35
Баллы
18
записывает время начала в переменную:
C#:
DateTime startTime = DateTime.Now;
project.Variables["CZAS_ROZPOCZECIA_STRIMA"].Value = Convert.ToString(startTime);
вычитает более раннее время из текущего:
C#:
DateTime startTime = Convert.ToDateTime(project.Variables["CZAS_ROZPOCZECIA_STRIMA"].Value);

DateTime stopTime = DateTime.Now;
TimeSpan roznica = stopTime - startTime;

string startdatetime = Convert.ToString(roznica.TotalMilliseconds);
double ticks = double.Parse(startdatetime);
TimeSpan time = TimeSpan.FromMilliseconds(ticks);
DateTime startdate = new DateTime(time.Ticks);
project.Variables["CZAS_TRWANIA_CALEGO_STRIMA"].Value = startdate.ToString("HH:mm:ss");
 
  • Спасибо
Реакции: Artmain1

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Спасибо большое но это посчитает разницу в часах не учтет сутки
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
записывает время начала в переменную:
C#:
DateTime startTime = DateTime.Now;
project.Variables["CZAS_ROZPOCZECIA_STRIMA"].Value = Convert.ToString(startTime);
вычитает более раннее время из текущего:
C#:
DateTime startTime = Convert.ToDateTime(project.Variables["CZAS_ROZPOCZECIA_STRIMA"].Value);

DateTime stopTime = DateTime.Now;
TimeSpan roznica = stopTime - startTime;

string startdatetime = Convert.ToString(roznica.TotalMilliseconds);
double ticks = double.Parse(startdatetime);
TimeSpan time = TimeSpan.FromMilliseconds(ticks);
DateTime startdate = new DateTime(time.Ticks);
project.Variables["CZAS_TRWANIA_CALEGO_STRIMA"].Value = startdate.ToString("HH:mm:ss");

Спасибо большое но это посчитает разницу в часах не учтет сутки
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Спасибо большое но это посчитает разницу в часах не учтет сутки
вот тебе код который вернет разницу в часах.
как конвертировать из строки в формат даты, ищи сам. Я хз как это делать в новых версиях зенки. Спасибо разработчикам с ихними головоломками насчет даты.
C#:
DateTime startTime = DateTime.Now.AddDays(-2);
DateTime stopTime = DateTime.Now;
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
вот тебе код который вернет разницу в часах.
как конвертировать из строки в формат даты, ищи сам. Я хз как это делать в новых версиях зенки. Спасибо разработчикам с ихними головоломками насчет даты.
C#:
DateTime startTime = DateTime.Now.AddDays(-2);
DateTime stopTime = DateTime.Now;
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
где мне тут свою дату вставить?
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
DateTime startTime = new DateTime("{-Variable.data-}");
DateTime stopTime = new DateTime("{-Variable.TimeNow_Date_custom-}");
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
Ребята где ошибка с цифрами все работает с переменными не хочет
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Это макросы javascript и они не работают в C#
DateTime startTime = new DateTime(2021,01,19,14,00,00);
DateTime stopTime = new DateTime(2021,01,19,14,00,00);
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
У меня так все работает
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
DateTime startTime = new DateTime(2021,01,19,14,00,00);
DateTime stopTime = new DateTime(2021,01,19,14,00,00);
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
У меня так все работает
Тут вы вводите прямые значения, а макросы типа {-Variable.data-} работать в C# не будут, нужно соблюсти синтаксис C# и вписать переменные правильно, можете использовать ПКМ и из контекстного меню вставить нужную переменную с помощью пункта "Установить значение из переменной", она впишется в правильном синтаксисе для C#.
 
  • Спасибо
Реакции: Artmain1

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Ого спасибо Большое!
 
  • Спасибо
Реакции: Sergodjan

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Тут вы вводите прямые значения, а макросы типа {-Variable.data-} работать в C# не будут, нужно соблюсти синтаксис C# и вписать переменные правильно, можете использовать ПКМ и из контекстного меню вставить нужную переменную с помощью пункта "Установить значение из переменной", она впишется в правильном синтаксисе для C#.
Вот как у меня получилось но выдает ошибку
DateTime startTime = new DateTime(project.Variables["data"].Value);
DateTime stopTime = new DateTime(project.Variables["TimeNow_Date_custom"].Value);
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Вот как у меня получилось но выдает ошибку
DateTime startTime = new DateTime(project.Variables["data"].Value);
DateTime stopTime = new DateTime(project.Variables["TimeNow_Date_custom"].Value);
TimeSpan roznica = stopTime - startTime;
return roznica.TotalHours.ToString();
это не будет работать. project.Variables["data"].Value это тип строка.
тебе надо использовать что то типа
DateTime startTime = Convert.ToDateTime(project.Variables["data"].Value);
но в последних версиях зенки это у меня не завелось. говорю же ищи по форуму как сконвертировать дату из строки в формат даты, пробуй все варианты. и благодари разработчиков за этот квест с конвертацией дат.
 
  • Спасибо
Реакции: Artmain1

tim.go

Client
Регистрация
29.11.2019
Сообщения
103
Благодарностей
8
Баллы
18
Вычесть дату ребята помогите пожалуйста как решить вычесть дату 19.01.2021 11:00 - 19.01.2021 19:00 задача выяснить количество часов
Ну, лично как по мне достаточно просто будет все эти числа перевести в часы и вычесть одно из другого, числа получатся не маленькие, но логика без сбоев будет работать
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Ну, лично как по мне достаточно просто будет все эти числа перевести в часы и вычесть одно из другого, числа получатся не маленькие, но логика без сбоев будет работать
а как же что в разных месяцах разное количество дней
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
В проекте должно существовать две переменные dateOne и dateTwo. В которых даты строго в указанном Вами формате - 19.01.2021 11:00!

C#:
var dateOne = DateTime.ParseExact(project.Variables["dateOne"].Value, "dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);
var dateTwo = DateTime.ParseExact(project.Variables["dateTwo"].Value, "dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);

TimeSpan diff = dateOne - dateTwo;
return diff.TotalHours;
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
Вот что у меня получилось
DateTime startTime = Convert.ToDateTime(project.Variables["TimeNow_Date_custom"].Value);
DateTime stopTime = Convert.ToDateTime(project.Variables["data"].Value);
TimeSpan roznica = startTime - stopTime;
return roznica.TotalHours.ToString();
 

Artmain1

Client
Регистрация
14.10.2020
Сообщения
227
Благодарностей
9
Баллы
18
В проекте должно существовать две переменные dateOne и dateTwo. В которых даты строго в указанном Вами формате - 19.01.2021 11:00!

C#:
var dateOne = DateTime.ParseExact(project.Variables["dateOne"].Value, "dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);
var dateTwo = DateTime.ParseExact(project.Variables["dateTwo"].Value, "dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);

TimeSpan diff = dateOne - dateTwo;
return diff.TotalHours;
Огромное спасибо!
 

nail2501

Client
Регистрация
19.04.2015
Сообщения
483
Благодарностей
38
Баллы
28
Подскажите как вычесть из ДАТЫ число дней и получить новую ДАТУ.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Подскажите как вычесть из ДАТЫ число дней и получить новую ДАТУ.
C#:
// Дата +3 часа
return  DateTime.UtcNow.AddHours(3).ToString("HH:mm:ss dd.MM.yyyy", new System.Globalization.CultureInfo("en-US"));

// Дата -3 часа
return  DateTime.UtcNow.AddHours(-3).ToString("HH:mm:ss dd.MM.yyyy", new System.Globalization.CultureInfo("en-US"));

// Дата -3 дня
return  DateTime.UtcNow.AddDays(-3).ToString("HH:mm:ss dd.MM.yyyy", new System.Globalization.CultureInfo("en-US"));
 
  • Спасибо
Реакции: prostors

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