2012-07-23 2 views
1

У меня есть два разных столбца для хранения даты и времени. Одним из них является дата сохранения, а другое - время. Прежде чем я сделал это с местным временем, он работал нормально. Теперь я хочу установить это время для Аризоны. Итак, для этого я конвертирую свое время в UTC и использую TimeZoneIfo 's Метод ConvertTime, чтобы получить время Аризоны. Теперь моя проблема в том, что я могу получить дату, используя это, но пока я сохраняю время, когда он приходит в 12-часовом формате, я хочу преобразовать его в 24 часа. Мой кодМожем ли мы преобразовать время UTC в формат 24 часа? если да, то как?

DateTime UniversalScheduleDate = Convert.ToDateTime(txtDate.Text).ToUniversalTime(); 
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(Session["TimeZone"].ToString()); 
objSchdl.SDate = TimeZoneInfo.ConvertTime(UniversalScheduleDate, timeZoneInfo); 
DateTime UniversalStartTime = Convert.ToDateTime(txtStartTime.Text).ToUniversalTime(); 
objSchdl.Stime = TimeZoneInfo.ConvertTime(UniversalStartTime, timeZoneInfo).ToString(); 

Пожалуйста, помогите мне ..

ответ

3

Попробуйте преобразовать с помощью DateTimeParse вместе с DateTimeKind.Utc

Пример:

DateTime UniversalScheduleDate = DateTime.SpecifyKind(
DateTime.Parse(txtDate.Text),DateTimeKind.Utc); 

string formattedDate = DateTime.UniversalScheduleDate.ToString("HH:mm:ss tt"); 
+0

текста перед примером довольно здесь неуместен - это формат строка, который ставит его в 24-часовой формат ... хотя вы * также * включая AM/PM целеуказатель (нечетный, когда это 24 часа), и вы не указываете культуру, которая также нечетна для строк пользовательского формата. Не совсем ясно, что исходный вход * означает *, чтобы представлять универсальное время. –

1

Вы должны отделить часовой пояс информация от строковое представление. Они полностью ортогональные.

Похоже, вам, вероятно, просто нужно указать формат в вызове ToString, например.

ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture); 

Вы должны также рассмотреть разбор с specfic форматом, а также - и учитывая, какую культуру вы хотите использовать.

Также обратите внимание, что преобразование местного времени в универсальное время может быть потеряно из-за перехода на летнее время. Рамка .NET делает это относительно болезненным, чтобы справиться с этим красиво, но это то, что вы должны иметь в виду.

Наконец, обратите внимание, что при звонке ToUniversalTime, который будет использовать систему , местный часовой пояс для конверсии - это действительно то, что вы хотите?

+0

да, я хочу преобразовать его в Часовой пояс Аризоны, я получаю ошибку в CultureInfo, какой импир будет добавлен для нее ??? –

+0

@raman: Вы пытались найти в документации? Поиск «msdn CultureInfo» найдет его очень быстро. Я знаю, что вы хотите преобразовать его * в * часовой пояс Аризоны, но как насчет вашего первоначального вызова ToUniversalTime()? Это преобразует его * из * системного часового пояса ... –

+0

спасибо, что у меня есть googled для него .. спасибо, что помогли мне .. - raman 1 час назад –

0

Имейте время в 12-часовом формате. Перед тем, как сохранить его в БД, вы можете использовать приведенные ниже сценарии для изменения формата 24 часа и сохранить его

Надеюсь, что приведенный ниже код поможет вам.

 Response.Write("With Seconds" + "<br />"); 

     Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm:ss tt") + "<br />"); 
     Response.Write("Without Seconds" + "<br />"); 

     Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm tt") + "<br />"); 
+0

Я хочу преобразовать время UTC в формат 24 часа ... –

+0

CultureInfo namespace System.Globalization.CultureInfo – Peru

+0

спасибо, что у меня есть googled для него .. спасибо, что помогли мне .. –

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