时间
初始化时间
1 | DateTime date1 = new System.DateTime(2020, 7, 14); |
时间格式化
1 | DateTime dateTime = new DateTime(2020, 7, 14, 14, 23, 40); |
时间戳
1 | TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); |
结果类似于
1648866151124
时间戳
1 | /// <summary> |
日期格式化
1 | DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff dddd"); // => 2016-05-09 13:09:55:2350 星期一 |
可用于路径
1 | string timestr = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff"); |
结果类似于
2022-04-02-10-05-02-3485
定时任务
定时任务
1 | static void Main(string[] args) |
在后台线程上运行的,不是在UI线程上运行的。
System.Timers.Timer
基于线程池线程,可以通过Elapsed
事件在指定的间隔触发相应的操作。
事件中如果要操作UI线程的对象,使用下面的方式,并可以指定优先级。
1 | Dispatcher.Invoke |
在C#中使用Dispatcher.Invoke
调用方法时,可以设置不同的优先级,以决定该调用在UI线程中的执行顺序。
常见的优先级有以下几种:
DispatcherPriority.Send
:最高优先级,该操作会立即执行并阻塞调用线程,直到操作完成。DispatcherPriority.Normal
:默认优先级,该操作会在其他所有操作之后执行。DispatcherPriority.Background
:较低优先级,该操作会延迟执行,直到UI线程处于空闲状态。DispatcherPriority.ContextIdle
:最低优先级,该操作只有在UI线程完全空闲时才会执行。
定时任务2
1 | DispatcherTimer timer = new DispatcherTimer(); |
停止
1 | timer.Stop(); |
在UI线程上运行的。
建议只做简答的事情,否则会阻塞UI。
显示时长
1 | private DateTime duration = Convert.ToDateTime("2000-01-01 00:00:00"); |