每日总结:DataTabel排序、获取某个月的第一/最后一天、Sql中Replace、SubString、Lrim、Rtrim函数、常用的日期格式
Posted on 2013-04-13 18:28 星星之火116 阅读(9591) 评论(0) 编辑 收藏 举报2013-4-13
1、 DataTable排序
在实际的开发可能会用到对已填充的DataTable进行排序的问题,下面给大家介绍两种比较实用的排序方式。
public DataTable DateTableOrder(DataTable dt) { /*第一种方法*/ DataView dv = dt.DefaultView; dv.Sort = "Id Asc" ; dt = dv.ToTable(); /*第二种方法*/ DataRow[] drs = dt.Select( "" , "Id asc" ); //将已填充的表进行排序,按Id升序 DataTable dt1 = dt.Clone(); //新建DataTable对象,并将dt表结构和约束复制给dt1 dt1.Clear(); //清空dt1中的所有数据 foreach (DataRow dr in drs) //将dt中排过序的数据逐行复制给dt1 dt1.ImportRow(dr); return dt; } |
2、 Sql中的replace函数、去除空格函数、大小写转换函数、截取字符串函数
1) 描述:该该函数主要是用来替代字符串中的某些字符串。返回字符串,其中指定数目的某子字符串被替换为另一个子字符串
语法:Replace(old_text ,replace_chars,new_text)
参数:
- old_text: 字符串表达式,包含要替换的子字符串。
replace_chars:将要被替换的字符串
New_text:新字符串
示例如下:
Select replace(‘Olive116Only’,‘116’,‘Love’)
结果:OliveLoveOnly
2) Sql中消除空格的函数
Sql中没有专门去除所有空格的函数,但是有去除左、右空格的函数,使用方法如下:
select ltrim(' Olive Love Only')
结果:Olive Love Only
select rtrim(' Olive Love Only ')
结果: Olive Love Only
3) Sql中大小写转换函数upper,lower
Select upper(‘olive’),Lower(‘OLIVE’)
结果:OLIVE,olive
4) Sql中字符串截取函数
select substring('Olive116',1,5)
参数说明:1、被截取的字符串,从哪个位置开始截取,截取多少位
结果:Olive
3、 如何获取某个月的第一天或最后一天
//获取某个月第一天或最后一天,参数为示例时间,First/Last
public string GetTheFirstOrLastDay(DateTime dt, string parm) { string result = "" ; DateTime dt1; if (parm == "First" ) { dt1 = new DateTime(dt.Year, dt.Month, 1); result = string .Format( "{0:yyyy-MM-dd}" , dt1); } else if (parm == "Last" ) { dt1 = new DateTime(dt.Year, dt.Month, 1).AddMonths(1).AddDays(-1); result = string .Format( "{0:yyyy-MM-dd}" , dt1); } return result; } |
4、 一些常用的时间格式
先讲一下一些基本的格式模式
格式模式 说明
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
f 秒的小数精度为一位。其余数字被截断。
ff 秒的小数精度为两位。其余数字被截断。
fff 秒的小数精度为三位。其余数字被截断。
ffff 秒的小数精度为四位。其余数字被截断。
fffff 秒的小数精度为五位。其余数字被截断。
ffffff 秒的小数精度为六位。其余数字被截断。
fffffff 秒的小数精度为七位。其余数字被截断。
t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。
tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。 z 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。
zz 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。
zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。
: 在 TimeSeparator 中定义的默认时间分隔符。
/ 在 DateSeparator 中定义的默认日期分隔符。
% c 其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。
\ c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\\”。
只有上面第二个表中列出的格式模式才能用于创建自定义模式;
在第一个表中列出的标准格式字符不能用于创建自定义模式。
自定义模式的长度至少为两个字符;
例如,DateTime.ToString("d") 返回 DateTime 值;
“d”是标准短日期模式。
DateTime.ToString( "%d") 返回月中的某天;
“%d”是自定义模式.
DateTime.ToString( "d ") 返回后面跟有一个空白字符的月中的某天;
“d”是自定义模式。
比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式如要得到2005年06月 这样格式的时间
DateTime dt = DateTime.Now; Label1.Text = dt.ToString(); //2005-11-5 13:21:25 Label2.Text = dt.ToFileTime().ToString(); //127756416859912816 Label3.Text = dt.ToFileTimeUtc().ToString(); //127756704859912816 Label4.Text = dt.ToLocalTime().ToString(); //2005-11-5 21:21:25 Label5.Text = dt.ToLongDateString().ToString(); //2005年11月5日 Label6.Text = dt.ToLongTimeString().ToString(); //13:21:25 Label7.Text = dt.ToOADate().ToString(); //38661.5565508218 Label8.Text = dt.ToShortDateString().ToString(); //2005-11-5 Label9.Text = dt.ToShortTimeString().ToString(); //13:21 Label10.Text = dt.ToUniversalTime().ToString();//2005-11-5 5:21:25 Label1.Text = dt.Year.ToString(); //2005 Label2.Text = dt.Date.ToString(); //2005-11-5 0:00:00 Label3.Text = dt.DayOfWeek.ToString(); //Saturday Label4.Text = dt.DayOfYear.ToString(); //309 Label5.Text = dt.Hour.ToString(); //13 Label6.Text = dt.Millisecond.ToString(); //441 Label7.Text = dt.Minute.ToString(); //30 Label8.Text = dt.Month.ToString(); //11 Label9.Text = dt.Second.ToString(); //28 Label10.Text = dt.Ticks.ToString(); //632667942284412864 Label11.Text = dt.TimeOfDay.ToString(); //13:30:28.4412864 Label1.Text = dt.ToString(); //2005-11-5 13:47:04 Label2.Text = dt.AddYears(1).ToString(); //2006-11-5 13:47:04 Label3.Text = dt.AddDays(1.1).ToString(); //2005-11-6 16:11:04 Label4.Text = dt.AddHours(1.1).ToString(); //2005-11-5 14:53:04 Label5.Text = dt.AddMilliseconds(1.1).ToString(); //2005-11-5 13:47:04 Label6.Text = dt.AddMonths(1).ToString(); //2005-12-5 13:47:04 Label7.Text = dt.AddSeconds(1.1).ToString(); //2005-11-5 13:47:05 Label8.Text = dt.AddMinutes(1.1).ToString(); //2005-11-5 13:48:10 Label9.Text = dt.AddTicks(1000).ToString(); //2005-11-5 13:47:04 Label10.Text = dt.CompareTo(dt).ToString(); //0 //Label11.Text = dt.Add(?).ToString();//问号为一个时间段 Label1.Text = dt.Equals( "2005-11-6 16:11:04" ).ToString(); //False Label2.Text = dt.Equals(dt).ToString(); //True Label3.Text = dt.GetHashCode().ToString(); //1474088234 Label4.Text = dt.GetType().ToString(); //System.DateTime Label5.Text = dt.GetTypeCode().ToString(); //DateTime Label1.Text = dt.GetDateTimeFormats( 's' )[0].ToString(); //2005-11-05T14:06:25 Label2.Text = dt.GetDateTimeFormats( 't' )[0].ToString(); //14:06 Label3.Text = dt.GetDateTimeFormats( 'y' )[0].ToString(); //2005年11月 Label4.Text = dt.GetDateTimeFormats( 'D' )[0].ToString(); //2005年11月5日 Label5.Text = dt.GetDateTimeFormats( 'D' )[1].ToString(); //2005 11 05 Label6.Text = dt.GetDateTimeFormats( 'D' )[2].ToString(); //星期六 2005 11 05 Label7.Text = dt.GetDateTimeFormats( 'D' )[3].ToString(); //星期六 2005年11月5日 Label8.Text = dt.GetDateTimeFormats( 'M' )[0].ToString(); //11月5日 Label9.Text = dt.GetDateTimeFormats( 'f' )[0].ToString(); //2005年11月5日 14:06 Label10.Text = dt.GetDateTimeFormats( 'g' )[0].ToString(); //2005-11-5 14:06 Label11.Text = dt.GetDateTimeFormats( 'r' )[0].ToString(); //Sat, 05 Nov 2005 14:06:25 GMT Label1.Text =? string .Format( "{0:d}" ,dt); //2005-11-5 Label2.Text =? string .Format( "{0:D}" ,dt); //2005年11月5日 Label3.Text =? string .Format( "{0:f}" ,dt); //2005年11月5日 14:23 Label4.Text =? string .Format( "{0:F}" ,dt); //2005年11月5日 14:23:23 Label5.Text =? string .Format( "{0:g}" ,dt); //2005-11-5 14:23 Label6.Text =? string .Format( "{0:G}" ,dt); //2005-11-5 14:23:23 Label7.Text =? string .Format( "{0:M}" ,dt); //11月5日 Label8.Text =? string .Format( "{0:R}" ,dt); //Sat, 05 Nov 2005 14:23:23 GMT Label9.Text =? string .Format( "{0:s}" ,dt); //2005-11-05T14:23:23 Label10.Text = string .Format( "{0:t}" ,dt); //14:23 Label11.Text = string .Format( "{0:T}" ,dt); //14:23:23 Label12.Text = string .Format( "{0:u}" ,dt); //2005-11-05 14:23:23Z Label13.Text = string .Format( "{0:U}" ,dt); //2005年11月5日 6:23:23 Label14.Text = string .Format( "{0:Y}" ,dt); //2005年11月 Label15.Text = string .Format( "{0}" ,dt); //2005-11-5 14:23:23? Label16.Text = string .Format( "{0:yyyyMMdd}" ,dt); |
今天的总结就到这里了,只是项目中遇到的一些小的知识点,有些也不常用,但是这些也是很有必要去总结下,也算是对自己学习、工作的巩固吧。希望能给朋友们带来些帮助,有关常用日期格式这一块,是参考别的网友的博文的,还请见谅!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构