所以我的程序中有这两个值:
EDate = "20240328";
ETime = "145222"
这些本质上是交易的时间戳,我需要将其转换为以下格式:
2024-03-28T19:52:22.000Z
我尝试了很多方法,这是我发现正确的唯一方法。
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime dateValue;
String format = "yyyy-MM-dd\\THH:mm:ss:fff\\Z";
string EDate = "20240328";
string ETime = "145222";
string dtString = String.Concat(EDate, ETime);
int y = Convert.ToInt32(dtString.Substring(0,4));
int mm = Convert.ToInt32(dtString.Substring(4,2));
int dd = Convert.ToInt32(dtString.Substring(6,2));
int hh = Convert.ToInt32(dtString.Substring(8,2)) + 5; // Our servers are on Central time
int m = Convert.ToInt32(dtString.Substring(10,2));
int ss = Convert.ToInt32(dtString.Substring(12,2));
dateValue = new DateTime(y, mm, dd, hh, m, ss);
// Result: 2024-03-28T19:52:22.000Z
Console.WriteLine(dateValue.ToString(format));
有更简单的方法吗?
// dateValue should be yyyyMMdd. timeValue should be HHmmss
string FormatTimestamp(string dateValue, string timeValue)
{
string format = "yyyyMMddHHmmss";
return DateTime.ParseExact(dateValue + timeValue, format, CultureInfo.InvariantCulture).ToString("yyyy-MM-dd\\THH:mm:ss:fff\\Z");
}