如何解析日期时间秒

时间:2013-05-13 12:02:39

标签: c# parsing datetime datetimeoffset

我有一个字符串

1368352924.281610000

展示DateTime

我该如何解析这个?

尝试过:

string rststr = Convert.ToString(result);                       
string[] rststrarr = rststr.Split('.');
DateTime.Parse(rststrarr[0]);

修改 抱歉让人困惑。它指出,这是一个高分辨率的unix时间戳。 亲切的问候。

2 个答案:

答案 0 :(得分:3)

您需要TimeSpan.FromMilliseconds,然后将其添加到您的毫秒值所指的参考时间。

e.g。 (编辑2 :假设您的参考日期是DateTime.MinValue)

double d = double.Parse("1368352924.281610000");
TimeSpan ts = TimeSpan.FromMilliseconds(d);
DateTime dt = DateTime.MinValue.Add(ts);

编辑正如Wouter Huysentruit所指出的那样,有很多方法可以解决这个问题。你应该选择一个强调你的场景意图的那个例如:

DateTime dt = DateTime.MinValue.Add(ts);
dt = DateTime.MinValue + ts;
dt = dateTime.MinValue.AddMilliseconds(d);
dt = DateTime.FromOADate(d);

(对于后者,请参阅FromOADate

答案 1 :(得分:3)

这个数字可能代表自1970年1月1日UTC以来经过的秒数。这是“Unix Epoch”值,在许多系统和日期格式中非常常见。

假设我对您的价值类型是正确的,那么您可以执行以下操作:

// you said you were starting with a string
string s = "1368352924.281610000";

// but you are going to need it as a double.
// (If it's already a double, skip these two steps)
var d = double.Parse(s);

// starting at the unix epoch
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

// simply add the number of seconds that you have
DateTime dt = epoch.AddSeconds(d);


Debug.WriteLine("{0} {1}", dt, dt.Kind);  // prints  05/12/2013 10:02:04 Utc