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总结-转的更多相关文章

  1. csharp中DateTime总结

    Table of Contents 1 时间格式输出 2 求某天是星期几 3 字符串转换为DateTime 3.1 String->DateTime 的弹性做法 4 计算2个日期之间的天数差 5 ...

  2. .NET中DateTime.Now.ToString的格式化字符串

    .NET中DateTime.Now.ToString显示毫秒:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") DateTime.N ...

  3. easyui datagrid中datetime字段的显示和增删改查问题

    datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...

  4. 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...

  5. C#中 DateTime , DateTime2 ,DateTimeOffset 之间的小区别 (转载)

    闲来无事列了个表比对一下这3兄弟之间还是有一点差距的╮(╯_╰)╭   DateTime DateTime2 DateTimeOffset 日期范围 1753-01-01到 9999-12-31 00 ...

  6. SQL中DateTime转换成Varchar样式

    SQL中DateTime转换成Varchar样式语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect ...

  7. python中datetime模块中datetime对象的使用方法

    本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...

  8. C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法

    原文:C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法 本人新手,在.Net中写WebAPI的时候,当接口返回的json数据含有日期时间类型的字段时, ...

  9. 解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于 ...

随机推荐

  1. C#获得窗口控件句柄

    /*整个Windows编程的基础.一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条, ...

  2. restful开发API

    http://blog.csdn.net/kkkloveyou/article/details/21391033 小示例http://blog.csdn.net/u011645059/article/ ...

  3. 向安装包中添加设备 UDID. 蒲公英内测

    向安装包中添加设备 UDID 前言 注:本文适用于只有苹果个人开发者账号.公司开发者账号.或教育开发者账号的 iOS 开发者. 对于没有企业开发者账号(299$)的开发者来说,要想使用蒲公英将自己的应 ...

  4. C++ 代码格式化工具Astyle

    1.下载Asyle程序. win版本:https://sourceforge.net/projects/astyle/ 2.将bin/AStyle.exe拷到源码目录中,在命令行终端执行. AStyl ...

  5. copy unicode HTML to clipboard

    How to copy unicode HTML code to the clipboard in html format, so it can be pasted into Writer, Word ...

  6. python测试开发django-45.xadmin添加小组件报错解决

    前言 xadmin首页上有个添加小组件按钮,打开的时候会报错"render() got an unexpected keyword argument 'renderer'" 环境: ...

  7. iOS开发-适配器和外观模式

    适配器模式,属于结构型模式,其主要作用是将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.适配器模式有对象适配器和类适配器两种,类适配器模 ...

  8. [Python设计模式] 第6章 衣服搭配系统——装饰模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目 设计一个控制台程序,可以给人搭配嘻哈风格(T恤,垮裤,运动鞋)或白领风格( ...

  9. 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息

    开篇介绍 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反.非常直观 ...

  10. 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)

    Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 #!/usr/bin/env python # encoding: utf-8 ...