0

次のような状況があります。私はC++コードを持っています

1)SystemTimeToFileTime(&st, &m_Time)

上記の呼び出しstが文字列から値を解析し、そのメンバーに手動で割り当てることによって組み立てられる前に (以下の段落を参照してください) -ただし、年、月、日、時、分、および秒のみが割り当てられます。

m_TimeFILETIME 型のインスタンス変数です。

このメソッドは、呼び出された関数で呼び出されます 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
4

1 に答える 1