Как я обрабатываю дату и время в другом часовом поясе?

Что вы пытаетесь сделать, это назначить строковый литерал указателю char * - это плохо (подробнее см. Как избавиться от deprecated conversion from string constant to ‘char*’ предупреждений в GCC? ). Вот возможный подход:

#define MAX_NAME_LEN 128
#define MAX_NICK_NAMES 10

struct widget_t {
    char name[MAX_NAME_LEN];
    uint8_t numberOfNicknames;
    char nicknames[MAX_NICK_NAMES][MAX_NAME_LEN];
};

widget_t SomeWidget;

void setUpFunction () {
    strcpy(SomeWidget.name, "Lawn Mower");
    SomeWidget.numberOfNicknames = 2;
    strcpy(SomeWidget.nicknames[0], "Choppie McGrasschopper");
    strcpy(SomeWidget.nicknames[1], "Really Noisy");
}

В любом случае, поскольку вы пометите свой вопрос с помощью C++, я бы предложил вам использовать вместо этого std::string и std::vector.

8
задан saschabeaumont 24 March 2009 в 22:22
поделиться

9 ответов

Скажем, пользователь в нью-йоркских наборах в унисон дата проекта как "в любое время в понедельник 26 января". Это означает "в любое время от 0600 понедельник 26 января к 0600 вторник 27 января" в Брюсселе и "в любое время с 2000 воскресенье 25 января к 2000 понедельник 26 января" в Лос-Анджелесе.

Так выполнение задачи в 2100 в понедельник 26 прекрасно в Брюсселе и Нью-Йорке, но слишком поздно в Лос-Анджелесе.

Одна возможная работа вокруг никогда не является просто работой с датой. Если время не указано, или набор, он в течение 0000 часов или 2 400 часов в день указал в часовом поясе пользователя.

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

5
ответ дан 5 December 2019 в 13:02
поделиться

Вы не сможете достигнуть того, что Вы пытаетесь обойтись без хранения точного времени. У Вас просто нет достаточной информации.

2
ответ дан 5 December 2019 в 13:02
поделиться

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

2
ответ дан 5 December 2019 в 13:02
поделиться

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

2
ответ дан 5 December 2019 в 13:02
поделиться

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

Иначе решите то, чем время по умолчанию крайнего срока должно быть в часовом поясе, задача была создана в, например, 21-го марта 17:00 EST или 22-го марта 0:00 EST, и отобразите это в локальном часовом поясе. Различие в часовом поясе затем продвинет его в предыдущий день или на следующий день соответственно для средства просмотра.

1
ответ дан 5 December 2019 в 13:02
поделиться

2008 SQL допускает тип данных Даты, который не имеет никакой временной стоимости связанной с ним. Это позволяет кому-то говорить, что мне нужен в сделанный этой Датой, но я не забочусь, ли это +/-несколько часов. Если выбранная дата является 01.01.2009, но это происходит 02.01.2009 в 2:00 их время, они, вероятно, не заботятся.

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

Это вынет большую часть сложности из указания, когда что-то будет завершено, это будет или завершено около определенного дня или к определенному времени.

1
ответ дан 5 December 2019 в 13:02
поделиться

Если бы у Вас есть единственный экземпляр DB, я сохранил бы все даты в метке времени даты и времени Вашего сервера БД. Если Вы добавляете метку времени к строкам, рассматриваете GetDate () в T-SQL или как значение по умолчанию столбца даты с меткой времени. Затем у Вас есть своя единственная контрольная точка навсегда. Рассмотрите формат UTC там.

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

Не зная больше, это трудно говорить точно, каково разрешение.

0
ответ дан 5 December 2019 в 13:02
поделиться

Ваше решение зависит от Вашего приложения и требований.

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

Скорее всего, если задача или встреча будут должны в 12:00 на 21/март в Лондоне затем, то она произойдет в 2 130 на 21/март в Аделаиде (+0930), но это - требование к приложению не любой зловещий связанный с часовым поясом стандарт.

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

0
ответ дан 5 December 2019 в 13:02
поделиться

Вы могли бы хотеть сохранить дату в от этого, знающий часовой пояс. Это поможет Вам в Ваших вычислениях. 2008 SQL Server, например, поддерживает datetimeoffset, который делает точно это. Кроме того, при использовании SQL 2005 с небольшим количеством усилия, можно записать собственному SQL тип данных CLR для поддержки этого.

0
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: