代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
日期分割,做按时间统计时会用到
作者:
东京
/ 发布于
2016/7/27
/
574
我们知道数据库里的datediff函数可以判断两个时间的时间差,在做统计时,常常会统计:今天的记录,本周的记录,本月的记录,三个月内的记录,本年度记录等等。如果想对时间段做的更为人性化或更精确,还是自己拆分时间段比较好。比如统计时间到当前时间。
using System; using System.Collections.Generic; using System.Globalization; namespace 日期分割 { class Program { static void Main() { Dictionary<string, string> timeRangeDic = new Dictionary<string, string>(); Console.WriteLine("==================[一天内时间段(到当前时间)分割]===================="); DateTime todayStart = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); for (int hour = 1; hour <= DateTime.Now.Hour; hour++) { string key = string.Format("{0}-{1}", todayStart.AddHours(hour - 1).ToString("HH时"), todayStart.AddHours(hour).ToString("HH时")); if (!timeRangeDic.ContainsKey(key)) { timeRangeDic.Add(key, todayStart.AddHours(hour - 1).ToString("yyyy-MM-dd HH:00:00") + " 到 " + todayStart.AddHours(hour).ToString("yyyy-MM-dd HH:00:00")); } } foreach (KeyValuePair<string, string> pair in timeRangeDic) { Console.WriteLine(pair.Key + " " + pair.Value); } Console.WriteLine(); Console.WriteLine("==================[最近一周内(到当前时间)时间段分割]================"); timeRangeDic.Clear(); DateTime weekStart = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")).AddDays(-(int)(DateTime.Now.DayOfWeek)); for (int day = 0; day < Convert.ToInt32(DateTime.Now.DayOfWeek); day++) { string key = string.Format("{0}-{1}", GetWeek(day), GetWeek(day + 1)); if (!timeRangeDic.ContainsKey(key)) { if (day == Convert.ToInt32(DateTime.Now.DayOfWeek) - 1) { timeRangeDic.Add(key, weekStart.AddDays(day).ToString("yyyy-MM-dd HH:00:00") + " 到 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//当前时间 } else { timeRangeDic.Add(key, weekStart.AddDays(day).ToString("yyyy-MM-dd HH:00:00") + " 到 " + weekStart.AddDays(day + 1).ToString("yyyy-MM-dd HH:00:00")); } } } foreach (KeyValuePair<string, string> pair in timeRangeDic) { Console.WriteLine(pair.Key + " " + pair.Value); } Console.WriteLine(); Console.WriteLine("==================[最近一月内(到当前时间)时间段分割]=============="); timeRangeDic.Clear(); DateTime monthStart = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00")); for (int day = 1; day < DateTime.Now.Date.Day; day++) { string key = string.Format("{0}日-{1}日", day.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'), (day + 1).ToString(CultureInfo.InvariantCulture).PadLeft(2, '0')); if (!timeRangeDic.ContainsKey(key)) { if (day == DateTime.Now.Date.Day - 1) { timeRangeDic.Add(key, monthStart.AddDays(day - 1).ToString("yyyy-MM-dd HH:00:00") + " 到 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } else { timeRangeDic.Add(key, monthStart.AddDays(day - 1).ToString("yyyy-MM-dd HH:00:00") + " 到 " + monthStart.AddDays(day).ToString("yyyy-MM-dd HH:00:00")); } } } foreach (KeyValuePair<string, string> pair in timeRangeDic) { Console.WriteLine(pair.Key + " " + pair.Value); } Console.WriteLine(); Console.WriteLine("==================[最近三个月内(到当前时间)时间段分割]=============="); timeRangeDic.Clear(); DateTime currMonthStart = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00")); for (int month = 2; month >= 0; month--) { string key = string.Format("{0}-{1}", currMonthStart.AddMonths(-month - 1).ToString("yyyy年MM月"), currMonthStart.AddMonths(-month).ToString("yyyy年MM月")); if (!timeRangeDic.ContainsKey(key)) { if (month == 0) { timeRangeDic.Add(key, currMonthStart.AddMonths(-month - 1) .ToString("yyyy-MM-dd HH:00:00") + " 到 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//当前时间 } else { timeRangeDic.Add(key, currMonthStart.AddMonths(-month - 1) .ToString("yyyy-MM-dd HH:00:00") + " 到 " + currMonthStart.AddMonths(-month).ToString("yyyy-MM-dd HH:00:00")); } } } foreach (KeyValuePair<string, string> pair in timeRangeDic) { Console.WriteLine(pair.Key + " " + pair.Value); } Console.WriteLine(); Console.WriteLine("==================[本年内(到当前时间)时间段分割]==================="); timeRangeDic.Clear(); DateTime yearStart = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01 00:00:00")); for (int month = 1; month < DateTime.Now.Date.Month; month++) { string key = string.Format("{0}月-{1}月", month.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'), (month + 1).ToString(CultureInfo.InvariantCulture).PadLeft(2, '0')); if (!timeRangeDic.ContainsKey(key)) { if (month == DateTime.Now.Date.Month - 1) { timeRangeDic.Add(key, yearStart.AddMonths(month - 1).ToString("yyyy-MM-dd HH:00:00") + " 到 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } else { timeRangeDic.Add(key, yearStart.AddMonths(month - 1).ToString("yyyy-MM-dd HH:00:00") + " 到 " + yearStart.AddMonths(month).ToString("yyyy-MM-dd HH:00:00")); } } } foreach (KeyValuePair<string, string> pair in timeRangeDic) { Console.WriteLine(pair.Key + " " + pair.Value); } Console.Read(); } public static string GetWeek(int current) { string[] weekdays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" }; string week = current < weekdays.Length ? weekdays[current] : ""; return week; } } }
试试其它关键字
日期分割
同语言下
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
东京
贡献的其它代码
(
11
)
.
java实现获取用户的MAC地址
.
实现两个文本框同时输入
.
HTML5页面直接调用百度地图API,获取当前位置,直接导
.
连接四个数据表
.
控制TD字体颜色
.
div+css 百分比进度条
.
GZIP .gz 文件解压与压缩工具类
.
日期分割,做按时间统计时会用到
.
触屏版类似刷新页面文本框获取焦点的同时弹出手机键盘
.
查找ID工具类
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3