csharp中DateTime总结-转
Table of Contents
1 时间格式输出
DateTime的ToString(string)方法可以输出各种形式的字符串格式,总结如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace learning
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Test();
} /// <summary>
/// Description
/// </summary>
public void Test()
{
DateTime dateValue = DateTime.Now;
// Create an array of standard format strings.
string[] standardFmts = {"d", "D", "f", "F", "g", "G", "m", "o",
"R", "s", "t", "T", "u", "U", "y", ""};
// Output date and time using each standard format string.
StringBuilder str = new StringBuilder(); foreach (string standardFmt in standardFmts)
{
str.Append(String.Format("{0}: {1}", standardFmt,
dateValue.ToString(standardFmt)));
str.Append("\r\n");
}
this.textBox1.Text = str.ToString(); /*
// Create an array of some custom format strings.
string[] customFmts = {"h:mm:ss.ff t", "d MMM yyyy", "HH:mm:ss.f",
"dd MMM HH:mm:ss", @"\Mon\t\h\: M", "HH:mm:ss.ffffzzz" };
// Output date and time using each custom format string.
foreach (string customFmt in customFmts)
{
str.Append(String.Format("'{0}': {1}", customFmt,
dateValue.ToString(customFmt)));
str.Append("\r\n");
}
this.textBox1.Text = str.ToString();
*/
} }
}
/*
d: 2013-1-18
D: 2013年1月18日
f: 2013年1月18日 11:33
F: 2013年1月18日 11:33:37
g: 2013-1-18 11:33
G: 2013-1-18 11:33:37
m: 1月18日
o: 2013-01-18T11:33:37.3125000+08:00
R: Fri, 18 Jan 2013 11:33:37 GMT
s: 2013-01-18T11:33:37
t: 11:33
T: 11:33:37
u: 2013-01-18 11:33:37Z
U: 2013年1月18日 3:33:37
y: 2013年1月
: 2013-1-18 11:33:37 'h:mm:ss.ff t': 11:31:22.60 上
'd MMM yyyy': 18 一月 2013
'HH:mm:ss.f': 11:31:22.6
'dd MMM HH:mm:ss': 18 一月 11:31:22
'\Mon\t\h\: M': Month: 1
'HH:mm:ss.ffffzzz': 11:31:22.6093+08:00
*/
2 求某天是星期几
由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会 用switch来一个一个地对照,其实不用那么麻烦的,
/// <summary>
/// Description
/// </summary>
public void Test()
{
DateTime dateTime;
dateTime = DateTime.Now;
this.textBox1.Text = day[Convert.ToInt32(dateTime.DayOfWeek)];
}
string[] day = new string[]{ "星期日", "星期一", "星期二", "星期三", "星期四
", "星期五", "星期六" }; // }
3 字符串转换为DateTime
用DateTime.Parse(string)方法,符合"MM/dd/yyyy HH:mm:ss"格式的字符串, 如果是某些特殊格式字符串,就使用DateTime.Parse(String, IFormatProvider)方法。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Globalization; namespace learning
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Test();
} /// <summary>
/// Description
/// </summary>
private void ShowStr(string str)
{
this.textBox1.Text += str;
this.textBox1.Text += "\r\n";
} /// <summary>
/// Description
/// </summary>
public void Test()
{
// Use standard en-US date and time value
DateTime dateValue;
string dateString = "2/16/2008 12:15:12 PM";
try {
dateValue = DateTime.Parse(dateString);
ShowStr(String.Format("'{0}' converted to {1}.", dateString, dateValue));
}
catch (FormatException) {
ShowStr(String.Format("Unable to convert '{0}'.", dateString));
} // Reverse month and day to conform to the fr-FR culture.
// The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
dateString = "16/02/2008 12:15:12";
try {
dateValue = DateTime.Parse(dateString, new CultureInfo("fr-FR", false));
ShowStr(String.Format("'{0}' converted to {1}.", dateString, dateValue));
}
catch (FormatException) {
ShowStr(String.Format("Unable to convert '{0}'.", dateString));
} // Parse string with date but no time component.
dateString = "2/16/2008";
try {
dateValue = DateTime.Parse(dateString);
ShowStr(String.Format("'{0}' converted to {1}.", dateString, dateValue));
}
catch (FormatException) {
ShowStr(String.Format("Unable to convert '{0}'.", dateString));
}
}
}
}
3.1 String->DateTime 的弹性做法
利用 DateTime.ParseExact() 方法,只要你知道来源的日期格式,就可以转换。
但是,事情往往没有那么顺利,在使用者输入内容后,从 TextBox 中取出来的字串,不见得 符合你的预期的格式,有可能字串前、中、后多了一些空白、有可能 24 小时制与 12 小时 制搞溷写错了,有可能写【AM 与 PM】而不是【上午与下午】。
幸好 DateTime.ParseExact() 可以做到相当相当地弹性,例如:
string[] DateTimeList = {
"yyyy/M/d tt hh:mm:ss",
"yyyy/MM/dd tt hh:mm:ss",
"yyyy/MM/dd HH:mm:ss",
"yyyy/M/d HH:mm:ss",
"yyyy/M/d",
"yyyy/MM/dd"
}; DateTime dt = DateTime.ParseExact(" 2008/ 3/18 PM 02: 50:23 ",
DateTimeList,
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces
);
宣告一个 String 阵列 DateTimeList,内容值放置所有预期会客制化的日期格式,以符合各 种字串来源;使用 CultureInfo.InvariantCulture 解析各种国别不同地区设定;使用 DateTimesStyles.AllowWhiteSpaces 忽略字串一些无意义的空白。如此一来,即使像 " 2008/3 /18 PM 02: 50:23 " 这么丑陋的字串,也可以成功转到成 DateTime 型态。
4 计算2个日期之间的天数差
DateTime dt1 = Convert.DateTime("2007-8-1");
DateTime dt2 = Convert.DateTime("2007-8-15");
TimeSpan span = dt2.Subtract(dt1);
int dayDiff = span.Days + 1;
5 求本季度第一天
本季度第一天,很多人都会觉得这裡难点,需要写个长长的过程来判断。其实不用的,我 们都知道一年四个季度,一个季度三个月,用下面简单的方法:
/// <summary>
/// Description
/// </summary>
public void Test()
{
// Use standard en-US date and time value
DateTime dateValue = DateTime.Parse("12/12/2012");
string str = dateValue.AddMonths(0 - ((dateValue.Month - 1) % 3)).ToString("yyyy-MM-01");
this.textBox1.Text = str;
}
csharp中DateTime总结-转的更多相关文章
- csharp中DateTime总结
Table of Contents 1 时间格式输出 2 求某天是星期几 3 字符串转换为DateTime 3.1 String->DateTime 的弹性做法 4 计算2个日期之间的天数差 5 ...
- .NET中DateTime.Now.ToString的格式化字符串
.NET中DateTime.Now.ToString显示毫秒:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") DateTime.N ...
- easyui datagrid中datetime字段的显示和增删改查问题
datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...
- C#中 DateTime , DateTime2 ,DateTimeOffset 之间的小区别 (转载)
闲来无事列了个表比对一下这3兄弟之间还是有一点差距的╮(╯_╰)╭ DateTime DateTime2 DateTimeOffset 日期范围 1753-01-01到 9999-12-31 00 ...
- SQL中DateTime转换成Varchar样式
SQL中DateTime转换成Varchar样式语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect ...
- python中datetime模块中datetime对象的使用方法
本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...
- C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法
原文:C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法 本人新手,在.Net中写WebAPI的时候,当接口返回的json数据含有日期时间类型的字段时, ...
- 解决python写入mysql中datetime类型遇到的问题
解决python写入mysql中datetime类型遇到的问题 刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于 ...
随机推荐
- AGC 016B.Colorful Hats(思路)
题目链接 对于某个元素分类讨论一下,就可以知道n个元素的总颜色种数了. 比如对a[1]分类讨论: 若1的颜色和某个元素相同,则总颜色数为a[1].a[i]要么等于a[1](i与某个元素颜色相同,记个数 ...
- Shiro笔记(一)基本概念
Shiro笔记(一)基本概念 一.简介 Shiro是一个Java安全框架,可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登录,验证用户是 ...
- 给Linux系统管理员准备的Nmap命令的29个实用范例
map即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器和 ...
- 我定制的Stylish样式
没有办法上传,只好存到这里. 天涯 .atl-con-ft, .js-zhiyin-area, .ds_seat_foot, .hongbao-btn, .dashang-left-btn, .qrc ...
- JavaScript:变量提升和函数提升
第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...
- JavaScript原型之路
简介 最近我在学习Frontend Masters 上的高级JavaScript系列教程,Kyle 带来了他的“OLOO”(对象链接其他对象)概念.这让我想起了Keith Peters 几年前发表的一 ...
- db2笔记
第七章:数据库备份与恢复 (恢复的概念,db2日志,数据库和表空间的备份,数据库和表空间的恢复,数据库和表空间的前滚,recover使用程序,数据库重建,监控备份恢复和复原,优化备份恢复和复原)1) ...
- Ubuntu下升级Git以及获取ssh keys的代码
今天开始用的git,记下获取ssh keys 的代码 ? 1 2 3 ssh-keygen -t rsa -C "your_email@example.com" # Enter f ...
- 【转】大数据分析中Redis怎么做到220万ops
原文:http://www.cnblogs.com/nnhy/archive/2018/01/16/Redis220.html 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作.为了更好的为 ...
- 解决IDEA授权报错
今天打开电脑,猛然发现IDEA授权失效,然后重新用账号密码登陆,发现被拒绝,各种百度百思不得其解,抱着试试的态度,点击了重置密码 https://account.jetbrains.com/forgo ...