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

时间:2012-02-02 02:35:45

标签: c# datetime

我的字符串看起来很好,方法如下:

TimeString = "2011.01.02 22:06:52.091"

现在我想将它转换为double,并将其保存为双号。我在c#中这样做,我怎么能这样做?

在网上找不到答案。

编辑:

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

时间出价询问

2011.01.02 22:06:52.091 1.5000 1.5001

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

3 个答案:

答案 0 :(得分:4)

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;

将其变为双重

答案 1 :(得分:3)

有几个选项,但在不知道使用场景的情况下,不可能知道什么是“最佳”。

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

另一个选项是使用DateTime.ToOADate,它将DateTime转换为OLE自动化日期为double。

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

答案 2 :(得分:0)

我相信这就是你要做的事情:

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();

}