C#中的时间操作
时间区间计算
//当前时间的月初
//DateTime t_now = new DateTime(2008, 3, 1, 0, 0, 1);
DateTime t_now = new DateTime(2008, 3, 31, 23, 59, 59);
DateTime monthBegin = t_now.Date.AddDays(1 - t_now.Day);//减当前天数后加1
Response.Write(monthBegin.ToString("yyyy-MM-dd HH:mm:ss"));
Response.Write("<br/>");
//上个月的月初
DateTime lastMonthBegin = t_now.AddMonths(-1).Date.AddDays(1-t_now.AddMonths(-1).Day);
Response.Write(lastMonthBegin.ToString("yyyy-MM-dd HH:mm:ss"));
Response.Write("<br/>");
//上个月的月末
DateTime lastMonthEnd = lastMonthBegin.AddMonths(1) ;
//注意上月月末的最后一微秒时间无限接近于当前月的最初一微小时间
//计算时取区间是[lastMonthBegin,lastMonthEnd)--可取下限不能取上限
Response.Write(lastMonthEnd.ToString("yyyy-MM-dd HH:mm:ss"));
//上个月的有效果天数
Response.Write("<br/>");
Response.Write((lastMonthEnd - lastMonthBegin).TotalDays.ToString());
两时间差
如: 执行某一操作,接着判断这一操作进行的绝对时间(按秒计算)
Datetime a=DateTime.Now;
do.....
TimeSpan ts= DateTime.Now -a ;
if(ts.TotalSeconds >=60){
do....
}
注意的是 一般情况下判断2个时间差是否超过某一绝对值, 是将两时间相减后 取Totalxxx ,如果直接比较(ts.Seconds>=60) 那么这个判断永远是false,因为 ts.Seconds 永远不等于 60 (时间是满60秒为一分)
使用时需要注意.
今天就在使用中因为没搞清楚化了不少时间.
打算使用Application保存用户 执行页面生成的进度信息,由于是多用户的,所以使用Application[Guid]来区分用户的操作,
为了及时回收Application使用过的内存,需要在每次启动页面生成作业时将过期的Application[Guid] 清理掉(使用Remove)
这样能保证Application在一能接受的数量内,但是当我将过期时间设置为60秒时,发现无论等多久已经分配application就是无法回收,后来发现是这个问题.
另外没有使用Cache 是因为Application在多数时候比Cache稳定,而Cache在服务器资源不是很充足的情况下,往往会提前被释放,或者根本申请不到, 当然这个设计在存在大量并发时也是个问题. 需要定期运行一个清理程序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述