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
最满意答案
我的方法:
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
相关问答
更多-
TCP/IP模型是一个________。[2023-10-02]
a -
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
c#并行与顺序(c# Parallel vs Sequential)[2023-03-15]
是的,划分输入数组是一种好方法。 实际上,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 ...
-
C#等待和处理任务(C# Waiting and Disposing of Tasks)[2021-09-15]
您可能永远不会在UI线程中调用像这样的单个任务 - 正如您所说的,整个过程不会阻塞UI线程。 实际上,从UI线程等待任何任务都是一个问题。 然而,等待任务完成可能对同步多个任务并返回组合结果有用 - 例如,想象两个任务同时在priceline和expedia上执行酒店查询,并且产生两个任务(例如后台线程)的线程等待结果并且结合结果以价格订购两个站点上的可用酒店。 然后可以将查询的最终结果发送回UI线程,通常通过执行回调或引发事件。 You would probably never call Wait on ... -
C#:管理线程等待队列(C#: Manage a thread waiting queue)[2022-01-21]
这是一个典型的案例,您可以使用发布 - 消费者模式。 您可以使用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 ...