ycwong99 Ответов: 3

Используя конкретный часовой пояс, а не на сервере.


 DateTimeOffset serverTime = DateTimeOffset.Now;

               DateTimeOffset localTime = TimeZoneInfo.ConvertTime(serverTime, TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time"));


if (localTime.Date >= eddate.Date && localTime.Date <= stdate.Date)
               {
                   if (localTime >= sttime && localTime <= edtime)
                   {

                       MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
                       MySqlCommand MyCommand2 = new MySqlCommand(query, MyConn2);
                       MySqlDataReader MyReader2;
                       MyConn2.Open();
                       MyReader2 = MyCommand2.ExecuteReader();
                       Label2.Text = "Thank you for You Vote";
                       //  System.Diagnostics.Debug.WriteLine();

                   }
                   else
                   {
                       Label2.Text = "Please check the eletion time!";
                       Label2.ForeColor = System.Drawing.Color.Yellow;
                   }
               }
               else
               {
                   Label2.Text = "Please check the eletion date !";
                   Label2.ForeColor = System.Drawing.Color.Purple;
               }


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

Я пытаюсь получить дату в указанном часовом поясе(Сингапурское стандартное время) и сравнить ее с датой, отображаемой в gridview. Я могу использовать Сингапурское стандартное время при проверке времени. Однако для даты он все еще не в состоянии получить дату в Сингапурском стандартном времени.

3 Ответов

Рейтинг:
1

Gerry Schmitz

Сингапур и Китай находятся в одном часовом поясе. +8 GMT


ycwong99

Привет, я действительно ошибся. Я знаю, что они используют один и тот же часовой пояс, я хотел бы получить текущую дату в Сингапурском стандартном часовом поясе.

Gerry Schmitz

"Местное время" - это серверное время. Это не то же самое, что "клиентское (локальное) компьютерное время", если вы получаете доступ из другого часового пояса. Сервер нуждается в смещении или времени клиента, чтобы сделать то, что вы, кажется, подразумеваете. Клиенты Windows синхронизируют свои часы в зависимости от местоположения; пересеките часовой пояс, и они перевернутся, отправляя полевой персонал в замешательство, когда они забывают об этом пункте.

ycwong99

Привет, я обновил свой код, используя смещение. Как я могу получить дату Сингапурского стандартного времени?

Рейтинг:
1

Vincent Maverick Durano

Ваш if-condition кажется, он отключился. Попробуйте изменить его на этот:

if (localTime.Date >= stdate.Date && localTime.Date <= eddate.Date){
  //Do stuff here
}


То, что изменилось в предыдущем коде, переключается на другой код. enddate и eddate для сравнения.


Рейтинг:
0

Dave Kreskowiak

Тебе не следует возиться с часовыми поясами.

Если вы собираетесь иметь сервер в одном часовом поясе, а клиент в другом, все даты должны быть преобразованы в UTC перед отправкой между клиентом и сервером. Все даты и время должны храниться в вашей базе данных в формате UTC.

Когда данные отображаются, это происходит при преобразовании из UTC в местный часовой пояс. При вводе данных вы преобразуете входные данные datetime в UTC, прежде чем отправлять их куда-либо.

Таким образом, каждая машина принимает использование "универсального" часового пояса.