FILETIME манипуляции в C # — достижение того же результата только с использованием DateTime

У меня следующая ситуация. У меня есть код C ++

1) SystemTimeToFileTime(&st, &m_Time)

Прежде чем позвонить st собирается путем разбора значения из строки и присваивания его членам вручную (см. параграф об этом ниже) — но ему назначены только год, месяц, день, час, минуты и секунды.

m_Time переменная экземпляра типа FILETIME.

Этот метод вызывается в функции с именем ToDate (Вот ссылка на эту функцию для заинтересованных: http://codepad.org/POoiKHMw, Я задокументировал каждую строку этого).
В основном в конце этого метода SystemTimeToFileTime вызывается с собравшимися st Передавая структуру, я подумал, что смогу легко воспроизвести эту часть ручного анализа в C #. Вот почему я спросил только об одной функции — SystemTimeToFileTime,

После этого есть такая функция:

2) dppDatetime_t RsDateTime::GetAsPrepaidTime() const
{
dppDatetime_t dt;// Just a custom structure, this is no problem to create in C#
SYSTEMTIME st = GetLocalTimeAsSystem();
dt.Year     = st.wYear;
dt.Month    = st.wMonth;
dt.Day      = st.wDay;
dt.Hour     = st.wHour;
dt.Minute   = st.wMinute;
dt.Second   = st.wSecond;
return dt;
}

GetLocalTimeAsSystem определяется как:

3) SYSTEMTIME RsDateTime::GetLocalTimeAsSystem() const
{
SYSTEMTIME st;

::FileTimeToSystemTime(&m_Time, &st);
return st;
}

Мне в основном нужно копировать функциональность, о которой я говорил выше: 1), 2), 3) точки в C #. Я был бы очень признателен за помощь в этом? Как добиться того же результата в C #?

Пользователь сначала звонит 1), затем 2) (но 2) звонит 3) изнутри).

Не могу ли я реализовать то, что сделано выше, используя только структуру DateTime в C #?

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


РЕДАКТИРОВАТЬ: После комментариев, вот пример некоторых ввода / вывода:

Это вход, который можно получить в пункте 1), эта строка будет проанализирована и st Структура собрана:

151010070707

Вывод, что пишется dppDatetime_t:

year:2015
month:10
day:10
hour:7
min:7
sec:7

PS Это строки формата, которые я видел в коде C ++, с которым вызывается функция ToDate:

  //YYMMDDhhmmss -  e.g. "151030123030"//DD.MM.YY
//DD.MM.YYYY - 01.01.2005
//DDMMYYYY

0

Решение

Я думаю, что есть ошибки в вашей спецификации.

Однако, если вы хотите разобрать строку как "151030123030" в DateTime где строка в формате "yyMMddHHmmss", вы можете сделать это так:

string input = "151030123030";

var date = DateTime.ParseExact(input, "yyMMddHHmmss", CultureInfo.InvariantCulture);

Console.WriteLine(date); // Prints "30/10/2015 12:30:30"
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]