Помогите разобраться с датой UTC

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
Есть дата
C#:
Wed, Jun 24, 2020
Мне нужно сделать проверку, если до конца даты осталось меньше 3-ех часов, то выполнять определенные действия.

Но проблема в том, что это дата Wed, Jun 24, 2020 на сайте в (UTC -7), а какой UTC будет на сервере или компе клиента я не знаю. Как вообще перевести все в одно UTC и сравнить эти даты? что-то я совсем запутался с этим.
 

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
C#:
DateTime dt1 = DateTime.Parse(project.Variables["ship_by"].Value);
string data= dt1.ToString("dd.MM.yyyy");
return data;
Дату я перевел в нормальный вид, но как сравнить сегодняшнюю дату и эту с этим UTC я не знаю
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
Если правильно все понял, то типа такого:
C#:
//строка с датой в UTC
string input = "Thu, Jun 25, 2020";
//языковой и региональный стандарт
System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-EN");
//формат входных данных
string format = "ddd, MMM dd, yyyy";
//получили дату в локальном времени
DateTime dts = DateTime.ParseExact(input,format,culture).ToLocalTime();
//текущее время + 3 часа
DateTime dtl = DateTime.Now.AddHours(3);
//сравниваем даты, без времени. если получившаяся дата dtl больше чем dts
if(dtl.Date.CompareTo(dts.Date)==1)
{
    //здесь делаем те самые определенные действия
    return dtl.Date;
}
else return -1;
ДЛя сравнения переводим исходную строку в локальное время машины, на которой будет выполняться код, и сравниваем уже с учетом локального времени.
Вот тут есть по работе с датами основы.
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes и russya

russya

Client
Регистрация
08.07.2014
Сообщения
719
Благодарностей
77
Баллы
28
Если правильно все понял, то вот так:
C#:
//строка с датой в UTC
string input = "Thu, Jun 25, 2020";
//языковой и региональный стандарт
System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-EN");
//формат входных данных
string format = "ddd, MMM dd, yyyy";
//получили дату в локальном времени
DateTime dts = DateTime.ParseExact(input,format,culture).ToLocalTime();
//текущее время + 3 часа
DateTime dtl = DateTime.Now.AddHours(3);
//сравниваем даты, без времени. если получившаяся дата dtl больше чем dts
if(dtl.Date.CompareTo(dts.Date)==1)
{
    //здесь делаем те самые определенные действия
    return dtl.Date;
}
else return -1;
ДЛя сравнения переводим исходную строку в локальное время машины, на которой будет выполняться код, и сравниваем уже с учетом локального времени.
Вот тут есть по работе с датами основы.
спасибо! уже вчера похоже сделал сам.
 

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