我有以下情况。我有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)。
我不能仅使用C#中的DateTime结构实现上面的操作吗?
我不是问如何在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 :(得分: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"