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您必须将该日期转换为时间跨度,但实际上您也可以将消失时间创建为时间跨度
,然后将该时间跨度添加到参考日期,以便减去日期时间。现在
,然后结果仍然是时间跨度