0

我有以下情况。我有 C++ 代码

1)SystemTimeToFileTime(&st, &m_Time)

st在通过解析字符串中的值并手动分配给其成员来组装上述调用之前(请参阅下面的段落) -但只分配了年、月、日、小时、分钟和秒。

m_Time是 FILETIME 类型的实例变量。

这个方法在一个名为的函数中被调用 ToDate(这里是那些感兴趣的人的链接到该函数:http: //codepad.org/POoiKHMw,我已经记录了它的每一行)。基本上在该方法的最后被调用并传递给它SystemTimeToFileTime的组装结构,我认为我可以轻松地在 C# 中复制该手动解析部分。st这就是为什么我只询问一个功能 - 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

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"
于 2015-10-30T09:37:53.780 回答