C#以毫秒为单位计算在提供字符串之前剩余的时间

C#以毫秒为单位计算在提供字符串之前剩余的时间,c#,datetime,timespan,milliseconds,C#,Datetime,Timespan,Milliseconds,我的问题是,我从一个网站中提取了一个原始数据字符串,它包含了一个以毫秒为单位的值。现在我想计算在未来的那个时间之前还有多少时间。首先,我尝试将当前时间转换为毫秒,我还尝试了将毫秒字符串转换为可以使用的时间值的相反方法,但这些方法都不起作用。。这可能是一个非常基本的问题,但我是新手,正在努力学习 下面的代码片段就是我正在使用的 DateTime baseDate = new DateTime(1970, 1, 1); long dissapearTime = long.Parse(test.

我的问题是,我从一个网站中提取了一个原始数据字符串,它包含了一个以毫秒为单位的值。现在我想计算在未来的那个时间之前还有多少时间。首先,我尝试将当前时间转换为毫秒,我还尝试了将毫秒字符串转换为可以使用的时间值的相反方法,但这些方法都不起作用。。这可能是一个非常基本的问题,但我是新手,正在努力学习

下面的代码片段就是我正在使用的

DateTime baseDate = new DateTime(1970, 1, 1);   
long dissapearTime = long.Parse(test.disappear_time.ToString()); 
TimeSpan diff = DateTime.Now - baseDate;
Console.WriteLine(diff.TotalMilliseconds-dissapearTime);
string oeps = diff.TotalMilliseconds.ToString();

我的字符串仍然为空。

最简单的解决方案是将时间转换为适当的
DateTime
obejct,并使用标准的
DateTime
计算

// 1ms = 10000 ticks, there may be a constant for that in DateTime, but I am not 100% sure
DateTime disappearTime = new DateTime(long.Parse(test.disappear_time.ToString()) * 10000);
Console.WriteLine(disappearTime - DateTime.Now);

请注意,从毫秒到毫秒的转换从第一年的1月1日开始计算。因此,如果这些毫秒是从另一个日期开始的(您提到的是1970年1月1日),那么您也必须减去该日期。

什么是
dissapartime
?它是在哪里定义的?
long dissapearTime=long.Parse(test.design\u time.ToString())它是从网站的原始数据中提取的一个毫秒字符串。“我的字符串仍然是空的”--哪个字符串<代码>组织环境保护计划
?不,上面的代码不可能做到这一点。
totalmillizes
属性的类型为
double
。使用
ToString()
将该
double
值转换为
string
,将始终返回长度非零的
字符串。你需要修正你的问题,使它包含一个可靠地再现你的问题的好东西。你为什么要将
消失\u time
转换为字符串,然后解析它?如果您能提供一个包含预期输入和输出而不仅仅是片段的示例,那将非常有帮助。此外,我希望您希望在任何地方都使用UTC—无论是在Unix时代还是在当前时间。旁注:1年的1月1日;我们没有年份
0
:这是
1ad
1bc
之后。很抱歉,这可能是另一个简单的问题,但您所做的推断的结果是一个时间跨度。我学到了很多,我不能从中扣除另一个约会时间。我应该在哪里扣除另一个日期1970年1月1日?@Duofilm您必须将该日期转换为时间跨度,但实际上您也可以将消失时间创建为
时间跨度
,然后将该时间跨度添加到参考日期,以便减去
日期时间。现在
,然后结果仍然是
时间跨度