asp.net c # - объединить / отформатировать дату и время из отдельных источников - PullRequest
1 голос
/ 04 января 2012

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

Дата указана в формате «20111215», что соответствует ггггммдд, так как базируется в Великобритании. Время отформатировано как «1417 + 0000», которое я предполагаю, это время плюс смещение от GMT?

По сути, мне нужно получить их в британское время Я пытался использовать DateTime.Parse на отдельных частях, но обе выдают ошибку как неправильный формат. Попробовал String.Format на части даты, но это не изменило его вообще. Я предполагаю, что мне нужно объединить 2 перед синтаксическим анализом, но я не уверен, что мне нужно сделать что-то еще с этим, чтобы сделать его приемлемым.

Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 04 января 2012

Используйте DateTimeOffset для включения часового пояса в DateTime.

        string date = "20111215";
        string time = "1417+0500";

        string dateAndTime = date + time;

        string format = "yyyyMMddHHmmzzz";

        CultureInfo provider = CultureInfo.InvariantCulture;

        DateTimeOffset t = DateTimeOffset.ParseExact(dateAndTime, format, provider);
0 голосов
/ 04 января 2012

Я думаю, что это должно работать (я не проверял это):

string dateString = "20111215";
string timeString = "1417+0000";
int year = int.Parse(dateString.Substring(0,4));
int month = int.Parse(dateString.Substring(4,2));
int day = int.Parse(dateString.Substring(6,2));

int hour = int.Parse(dateString.Substring(0,2));
int mins = int.Parse(dateString.Substring(2,2));

DateTime d = new DateTime(year, month, day, hour, mins, 0);
0 голосов
/ 04 января 2012
string date = "20111215";
string time = "1417+0000";
string dateString = date + time;;
string format = "yyyyMMddHHmmK"; 
// or something similar, I'm not sure about the timezone

DateTime result = DateTime.ParseExact(dateString, 
                                      format, 
                                      CultureInfo.InvariantCulture);
0 голосов
/ 04 января 2012

Если вы объединяете поля вместе, вы можете использовать DateTime.TryParseExact, чтобы разобрать их в DateTime.

string input = string.Format("{0} {1}", dateString, timeString);
DateTime parsed;
if(DateTime.TryParseExact(input, 
                          "yyyyMMdd HHmmK", 
                          CultureInfo.InvariantCulture, 
                          DateTimeStyles.None, 
                          out parsed))
{
  // parsed OK, use the parsed variable
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...