ADI@345 Ответов: 2

Как сравнить системную дату и дату сервера


Мне нужно сравнить системную дату и дату сервера на основе этого обновления строки.
Я пробовал что-то,но это работает только на локальном хосте, а не на сервере

Что я уже пробовал:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

       string userid = GVmydsr.DataKeys[e.RowIndex].Value.ToString();
       GridViewRow row = (GridViewRow)GVmydsr.Rows[e.RowIndex];
       Label date = (Label)row.FindControl("lblcurrentdate");

       string cdate = date.Text.ToString();
       DateTime date1 = DateTime.MinValue;
       DateTime.TryParseExact(cdate.Split(' ')[0], new string[] {"dd-MM-yyyy"}, null, System.Globalization.DateTimeStyles.None, out date1);
       string dt1 = date1.ToString("dd-MM-yyyy 00:00:00");

       GVmydsr.EditIndex = -1;

string dt2 = DateTime.Today.ToString("dd-MM-yyyy 00:00:00");

        if (dt1 == dt2)
        {
            con.Open();
           //My code
            cmd.ExecuteNonQuery();

        }

2 Ответов

Рейтинг:
20

Richard MacCutchan

Почему вы используете строки для сравнения, а не значения DateTime? И почему вы так часто преобразуете значения DateTime в строки и обратно?

Получите значение из вашей сетки и проанализируйте его до даты-времени, если оно уже не хранится таким образом. Затем вы можете сравнить часть даты с DateTime.Now.

if (dt1.Date == DateTime.Now.Date)
// ...


ADI@345

я внес изменения, но они работают только на локальном хосте, а не на сервере..

Richard MacCutchan

Что это значит? Вам нужно показать точный код, который работает на сервере, и точно объяснить, что означает "не работает".

ADI@345

формат даты сервера отличается от localhost, поэтому я не могу найти текущий формат даты сервера..Я пробую все форматы, но ни с кем не работаю..

Richard MacCutchan

Вот почему я сказал вам не использовать сравнение строк. Значения DateTime - это единственный полезный способ сравнения дат и времени. Если вы не понимаете этого, то у вас будут проблемы с каждой системой, над которой вы работаете.

ADI@345

SqlConnection con = новый SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);

строка имя пользователя = GVmydsr.DataKeys[электронный.Параметр rowindex].Значение.Метод toString();
GridViewRow row = (GridViewRow)GVmydsr.Rows[e.Параметр rowindex];
Дата метки = строка (метка).FindControl("lblcurrentdate");

строка cdate = date.Text.Метод toString();
Дата1 датавремя = Датавремя.Параметр minvalue;
значение datetime.TryParseExact(cdate.Split(' ')[0], new string[] {"MM/dd/yyyy"}, null, System.Глобализация.DateTimeStyles.Нет, дата выхода 1);
DateTime dt1 = date1;

GVmydsr.EditIndex = -1;

Ст2 датавремя = Датавремя.Сегодня.Дата;
если (dt1 == dt2)

{
//мой код
}

еще
{
Элемента управления scriptmanager.RegisterStartupScript(this, GetType(), "Success", "alert('Cannot Edit !!!.');", true);
gvbind();
}

сэр, я заменяю свой код вашим кодом, но снова сталкиваюсь с той же проблемой.
здесь dt1 и dt2 - это дата-время..

Richard MacCutchan

Затем вам нужно использовать свой отладчик, чтобы точно увидеть, какие значения содержатся в dt1 и dt2.

ADI@345

как я могу отлаживать свой код на сервере , он прекрасно работает на локальном хосте.

ADI@345

Оки, наконец-то это сработало, спасибо..

Рейтинг:
1

OriginalGriff

Цитата:
я внес изменения, но они работают только на локальном хосте, а не на сервере..

Скорее всего, ваш сервер и клиент находятся в разных часовых поясах: сделайте так, как предлагает Ричард, и используйте значения даты и времени, но преобразуйте все ваши значения даты и времени в UTC, прежде чем хранить их в своей базе данных и делать какие-либо сравнения. DateTime c=имеет метод для этого (значение datetime.Метод Touniversaltime (Система)[^]) но вам нужно будет каждый раз узнавать, в каком часовом поясе находится клиент - вы не можете просто конвертировать его на сервере с помощью сервера TZ - помните, что клиенты могут находиться не в одном часовом поясе друг с другом!

- Я? Я бы сделал все штамповки даты и времени на сервере, в UTC и игнорировал клиентские значения везде, где это возможно.