2010-05-04 2 views
-2

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

+4

Если вы принимаете ответы на свои вопросы, люди с большей вероятностью захотят ответить на последующие вопросы. – Syntactic

+1

Укажите, с какой проблемой вы столкнулись. И, конечно же, начните отмечать некоторые ответы! – Shaihi

ответ

3

Почему вы не используете DateTime.Now?

+0

Он хотел бы использовать 'DateTime.UtcNow' для этого. – MusiGenesis

+0

Я думал, что он говорит, что «ценности» ошибочны, потому что он ожидал, что дата будет в его TimeZone, а не UTC, но, надеюсь, мы получим от него отзывы. – thelost

+1

Я уверен, что мы это сделаем - он, очевидно, очень хорошо разбирается в ответах на свои вопросы. :) – MusiGenesis

2

В чем проблема?

Правильно ли ваша подпись p/invoke?

Правильно ли вы структурированы?

Как вы имеете дело с указателем struct, который «возвращается»?

2

Если возвращаемое время отключено на один час, то вы используете ошибку перехода на летнее время (которая может быть исправлена ​​с помощью hotfix).

GetSystemTime возвращает скоординированное всеобщее время (UTC). Вы можете искать только по местному времени, и в этом случае вы хотите вместо этого позвонить GetLocalTime (или просто используйте DateTime.Now или DateTime.UtcNow и пропустите материал PInvoke).

+0

спасибо .. GetLocaltime() и SetLocalTime() решили мою проблему – Sundar

1

Что вы подразумеваете под неправильными значениями?
Поскольку вы спрашиваете о Windows CE, может случиться так, что ваша система не сохранит RTC и не синхронизируется при загрузке, что приведет к отсутствию правильного времени.
Это конкретная платформа. Правильно ли время и дата на панели задач (если у вас есть это на изображении)?

6

Ах, время и CF и WinCE. Как весело! Наряду со всеми другими прекрасными ответами вы получили есть и другие вещи, чтобы знать:

  1. ОС хранит МестноеВремя, не UTC так GetSystemTime заканчивает получать МестноеВремя и их корректировки, что в обратном направлении на основе вашего часового пояса и летнего времени, так если местное время правильное, но SystemTime нет, значит, у вас неправильная установка TZ или DST.
  2. DST может или не может быть прав в связи с конгрессом изменить его, поэтому QFE может быть затребована OEM
  3. DST может быть включена или выключена в реестре
  4. КФ кэширует смещение часового пояса, как запуск, так что любой настройка часового пояса делает DateTime.Now некорректной до тех пор, пока вы не перезапустите приложение.
  5. Не все устройства могут сохраняться во времени потере мощности (или даже сбросу)
  6. Время будет «плавать» в течение дня. как сильно (от миллисекунд до нескольких секунд) зависит от фактической аппаратной реализации
+0

Любые более серьезные причины для работы в CF/WinMo вместо какой-либо другой платформы? :) – MusiGenesis

Смежные вопросы