用毫秒将日期时间转换为double或int?

问题描述:

我有一个字符串按以下方式看起来不错:用毫秒将日期时间转换为double或int?

TimeString = "2011.01.02 22:06:52.091" 

现在我想将其转换为加倍,并将其保存为双号。我正在做c#,我怎么能做到这一点?

真的无法在网上找到答案。

编辑:

的时间是一种金融货币报价时间戳:

时间买入卖出

2011.01.02 22:06:52.091 1.5000 1.5001

它是外汇报价时间的时间戳。我更喜欢这样:xxxxxxxxxxxxxxxx.ooo,xxxxxxxxxxxxxxx是显示“2011.01.02 22:06:52”我们有多少秒的int部分,而.ooo是“091”的毫秒,您怎么看?

+2

什么样的价值做你希望得到的结果呢?蜱,毫秒数等?换一种方式,你打算如何使用结果? – 2012-02-02 02:37:15

+0

可能的重复[如何将日期时间值转换为双?](http://*.com/questions/1010697/how-can-i-convert-a-datetime-value-to-a-double) – adatapost 2012-02-02 02:41:16

+0

@ M.Babcock,实际上,这是外汇报价时间的时间戳。我更喜欢这样:xxxxxxxxxxxxxxxx.ooo,xxxxxxxxxxxxxxx是显示“2011.01.02 22:06:52”我们有多少秒的int部分,而.ooo是“091”的毫秒,你觉得如何? – 2012-02-02 02:41:42

var span = DateTime.ParseExact(TimeString, 
          "yyyy.MM.dd HH:mm:ss.fff", 
          CultureInfo.InvariantCulture) - 
     new DateTime(2011, 01, 02, 22, 06, 52, 0); 
double d = span.TotalMilliseconds/1000.0; 

把它变成一个双

+0

@ Keith.Nicholas,String未被识别为有效的DateTime。这是通过运行您的代码投诉。 – 2012-02-02 03:11:08

+0

对不起,应该是HH不是......,改了我的代码,HH是24小时的时间。 – 2012-02-02 03:17:55

+0

居然把它改成了更好的东西:) – 2012-02-02 03:23:59

有一对夫妇的选择,但它是不可能知道什么是“最好的”,而无需知道使用场景。

如果可以将其存储为long(Int64),则可以使用DateTime.Ticks

另一种选择是使用DateTime.ToOADate,它将DateTime转换为OLE自动化日期的双精度型。

要转回,您可以使用constructor that takes TicksDateTime.FromOADate

+0

@ Reed.Copsey,你可能会写几个代码来进一步解释吗? – 2012-02-02 03:10:25

我相信这是你正在尝试做的:

static void Main(string[] args) 
{ 
    String timeString = "2011.01.02 22:06:52.091"; 

    string format = "yyyy.MM.dd HH:mm:ss.fff"; 

    double date = DateTime.ParseExact(timeString, format, CultureInfo.InvariantCulture).ToOADate(); 

}