首页 \ 问答 \ Intersystems Cache中两个日期时间戳之间的差异(Difference between two date time stamp in Intersystems Cache)

Intersystems Cache中两个日期时间戳之间的差异(Difference between two date time stamp in Intersystems Cache)

我想知道两个日期时间戳之间的小时数和分钟数。

如果是的话

 sDateTime = 2016-01-01 01:00 
 eDateTime = 2016-01-03 02:30

我希望它输出为49:30(49小时30分钟)我无法找到一种方法来解决这个问题。

到目前为止我所拥有的:

    Set oMNOF=##class(MNOF.MNOF).%OpenId(Id)

Set zstartDt=oMNOF.sDateTime 
Set startDt=$PIECE(zstartDt,",",1)          
Set startTime=$PIECE(zstartDt,",",2)    

Set zendDt=oMNOF.eDateTime 
Set endDt=$PIECE(zendDt,",",1)          
Set endTime=$PIECE(zendDt,",",2) 

    set dateDiff=((endDt - startDt))     //2 days 
set timeDiff=(endTime - startTime)    //outputs 5400 seconds

     set d = (dateDiff * 24 * 60 * 60)
set h = ((timeDiff - d) / 60)
set m = timeDiff - (d) - (h * 60)

感谢您的帮助。


I would like to find out the number of hours and minutes between two date time stamp.

if for example

 sDateTime = 2016-01-01 01:00 
 eDateTime = 2016-01-03 02:30

I would like it to output it as 49:30 (49hours and 30minutes) I am unable to figure a method to work this out.

what I have so far:

    Set oMNOF=##class(MNOF.MNOF).%OpenId(Id)

Set zstartDt=oMNOF.sDateTime 
Set startDt=$PIECE(zstartDt,",",1)          
Set startTime=$PIECE(zstartDt,",",2)    

Set zendDt=oMNOF.eDateTime 
Set endDt=$PIECE(zendDt,",",1)          
Set endTime=$PIECE(zendDt,",",2) 

    set dateDiff=((endDt - startDt))     //2 days 
set timeDiff=(endTime - startTime)    //outputs 5400 seconds

     set d = (dateDiff * 24 * 60 * 60)
set h = ((timeDiff - d) / 60)
set m = timeDiff - (d) - (h * 60)

Thank you for the help.


原文:https://stackoverflow.com/questions/39619833
更新时间:2023-06-03 10:06

最满意答案

我的方法:

public class DataViewModel
{
    public AsynchronousCommand Send;

    public DataViewModel()
    {
        Send = new AsynchronousCommand(() =>
        {
            SendData();
        });
    }

    private void SendData()
    {
    }
}

public class SomewhereInForm
{
    private DataViewModel dataViewModel = new DataViewModel();

    public SomewhereInForm()
    {
        dataViewModel.Send.Executed += SendOnExecuted;
    }

    private void SendOnExecuted(object sender, CommandEventArgs args)
    {
    }

    private void DoSome()
    {
        dataViewModel.Send.DoExecute(new int());
    }
}

这是1命令的例子。 你可以把命令放在List中,无论如何。

如果您不想构建自己的库命令,请使用: MVVM中的命令


My approach:

public class DataViewModel
{
    public AsynchronousCommand Send;

    public DataViewModel()
    {
        Send = new AsynchronousCommand(() =>
        {
            SendData();
        });
    }

    private void SendData()
    {
    }
}

public class SomewhereInForm
{
    private DataViewModel dataViewModel = new DataViewModel();

    public SomewhereInForm()
    {
        dataViewModel.Send.Executed += SendOnExecuted;
    }

    private void SendOnExecuted(object sender, CommandEventArgs args)
    {
    }

    private void DoSome()
    {
        dataViewModel.Send.DoExecute(new int());
    }
}

It's example with 1 command. You can put commands in List, whatever.

If you don't want build your own library witch commands, use this: Commands in MVVM

相关问答

更多
  • 是的,划分输入数组是一种好方法。 实际上,Microsoft提供了一个Partitioner类来帮助完全实现这种方法。 这里有一个例子展示了如何做到这一点: using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Threading.Tasks; namespace Demo { class Program ...
  • 我仍然认为使用Join更简单。 记录预期的完成时间(如现在+超时),然后在一个循环中 if(!thread.Join(End-now)) throw new NotFinishedInTime(); I still think using Join is simpler. Record the expected completion time (as Now+timeout), then, in a loop, do if(!thread.Join(End-now)) throw new ...
  • 我的方法: public class DataViewModel { public AsynchronousCommand Send; public DataViewModel() { Send = new AsynchronousCommand(() => { SendData(); }); } private void SendData() { } } public cl ...
  • 您可以使用以下方法来防止多个线程同时访问共享资源,它将管理您的错误。 使用mutex类来处理代码: private readonly Mutex m = new Mutex(); public void ThreadSafeMethod() { m.WaitOne(); try { /*excel related critical code */ } finally { m.ReleaseMutex(); } } 使用锁定方法: privat ...
  • 您可能永远不会在UI线程中调用像这样的单个任务 - 正如您所说的,整个过程不会阻塞UI线程。 实际上,从UI线程等待任何任务都是一个问题。 然而,等待任务完成可能对同步多个任务并返回组合结果有用 - 例如,想象两个任务同时在priceline和expedia上执行酒店查询,并且产生两个任务(例如后台线程)的线程等待结果并且结合结果以价格订购两个站点上的可用酒店。 然后可以将查询的最终结果发送回UI线程,通常通过执行回调或引发事件。 You would probably never call Wait on ...
  • 这是一个典型的案例,您可以使用发布 - 消费者模式。 您可以使用Queue或ConcurrentQueue对事件进行排队,然后让单个线程出列并执行实际处理。 您只需要一个线程,因为您说它们需要按顺序执行,这样可以避免创建线程的时间。 如果你不能(主要是因为你被迫使用旧版本的框架)使用并发版本,请密切注意你必须锁定队列访问的事实。 This is a typical case you can use the publish-consumer pattern. You can use a Queue ...
  • 来自MSDN : List可以同时支持多个阅读器,只要该集合未被修改即可。 所以如果你从不修改列表,你应该没问题。 请注意,使用HashSet会更有效 - 而HashSet也支持多个读取器1 。 你也可以使用Parallel LINQ来使你的查询变得更加甜美,并且几乎可以肯定地提高效率: // If you want duplicates in Numbers to still come up as duplicates in the result HashSet black ...
  • 基于std :: thread的实现应该可以解决问题。 例 #include #include #include #include #include #include #include using std::ref; using std::hash; using std::bind; using std::vector; using std::thread; using ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)