次のような状況があります。私はC++コードを持っています
1)SystemTimeToFileTime(&st, &m_Time)
上記の呼び出しst
が文字列から値を解析し、そのメンバーに手動で割り当てることによって組み立てられる前に (以下の段落を参照してください) -ただし、年、月、日、時、分、および秒のみが割り当てられます。
m_Time
FILETIME 型のインスタンス変数です。
このメソッドは、呼び出された関数で呼び出されます ToDate
(興味のある方は、その関数へのリンクを参照してください: http://codepad.org/POoiKHMw、すべての行を文書化しました)。基本的に、そのメソッドの最後に、SystemTimeToFileTime
アセンブルされたst
構造体が渡されて呼び出されるので、その手動解析部分を C# で簡単に複製できると考えました。そのため、私は 1 つの関数についてのみ質問し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) を内部的に呼び出します)。
C# で DateTime 構造のみを使用して上記のことを実装することはできませんか?
ToDate 関数で手動で解析を行う方法を尋ねているわけではありません。自分で行うこともできます。
編集:コメントの後、ここにいくつかの入力/出力のサンプルがあります:
これは項目 1) で受け取ることができる入力です。この文字列は解析され、st
構造が組み立てられます。
151010070707
出力、何が書き込まれるかdppDatetime_t
:
year:2015
month:10
day:10
hour:7
min:7
sec:7
PSこれらは、ToDate関数が呼び出されているC++コードで見たフォーマット文字列です。
//YYMMDDhhmmss - e.g. "151030123030"
//DD.MM.YY
//DD.MM.YYYY - 01.01.2005
//DDMMYYYY