0

我必须感谢早期帮助建议“滴答”。现在我几乎进入了我的逻辑,除了一件事,我的数据库中有一个 unix 时间,当我试图转换为实时并执行逻辑时。

对不起,让我再描述一下问题,

我从数据库中提取了四个不同的时间戳(开始,结束,开始1,结束1),从unix转换为实时。我正在使用以下代码进行转换

DateTime = Convert.ToDateTime("1/1/1970").AddSeconds(SnapTo5Mins(Convert.ToDouble(UnixDate))).AddHours(GMTOFFset);

这里的问题是,当列中的值为零时,日期时间将返回(1970 年 1 月 1 日)。

例如。我在数据库中的起始值为零,然后它重新运行(1970 年 1 月 1 日)

  1. 第 1 步:比较时间戳不等于 1/1/1970(原点时间) 第 2 步:如果不相等,则执行 Break = End.Subtract(Start); 第 3 步:如果相等,则将中断值分配为零或任何值 第 4 步:对 start1 重复第 1、2、3 步 第 5 步:连接两个 break + break1

        DateTime Origin = new DateTime(1970, 1, 1, 12, 0, 0, 0);
        DateTime Start ="01/01/1970 12:00";
        DateTime End = 01/01/1970 12:00";
        DateTime Start1 ="02/10/2013 12:20";
        DateTime End1 = "02/10/2013 02:20";
        TimeSpan Break;,finalMealBreak1;
        if (Origin.Year != Start.Year)
        {
            Break = End.Subtract(Start);
        }
        else
        {
            Break = //Assign constant value zero 
        }
          if (Origin.Year != Start1.Year)
        {
            Break1 = End1.Subtract(Start1);//break1 value must be 2hrs
        }
        else
        {
            Break1 = //Assign constant value zero
        }
       TimeSpan FinalBreakResult = Break + Break1; (FinalBreakresult value suppose to be 2 hrs )
    

提前致谢

4

2 回答 2

2

不是 100% 确定你想从时间跨度中得到什么,我认为是 0?但是你可以做一些事情来获得价值。

TimeSpan.Zero // timespan of 0

DateTime.Now.TimeOfDay // returns a value of the current time in a timespan
                       // obviously also works with any datetime

TimeSpan.FromSeconds(100) // timespan with 100 seconds
                          // There are a few of these, like FromHours, FromDays

编辑:使用您的代码

DateTime Origin = new DateTime(1970, 1, 1, 12, 0, 0, 0);
DateTime Start = DateTime.Parse("01/01/1970 12:00:00");
DateTime End = DateTime.Parse("01/01/1970 12:00:00");
DateTime Start1 = DateTime.Parse("02/10/2013 12:20:00");
DateTime End1 = DateTime.Parse("02/10/2013 14:20:00");
TimeSpan Break, Break1;

if (Origin.Year != Start.Year)
{
    Break = End.Subtract(Start);
}
else
{
    Break = TimeSpan.Zero;
}
if (Origin.Year != Start1.Year)
{
    Break1 = End1.Subtract(Start1);//break1 value must be 2hrs
}
else
{
    Break1 = TimeSpan.Zero;
}

TimeSpan FinalBreakResult = Break + Break1;
// Value of FinalBreakResult is 2 hours
于 2013-02-11T23:52:42.143 回答
1

当然。要添加到@Dan Saltmer 的答案:

DateTime then = DateTime.Now;
Thread.Sleep(500);
TimeSpan span = DateTime.Now - then;
于 2013-02-12T00:05:51.190 回答