??xml version="1.0" encoding="utf-8" standalone="yes"?> H体间传递数据,无论是父H体操作子窗体,q是子窗体操作符H体Q有以下几种方式Q?/strong> 一、通过静态变?/strong> 特点Q传值是双向的,实现?/strong> 实现代码如下Q?/strong> 在一?span face="Times New Roman" style="margin: 0px; padding: 0px;">appcM定义一个静态成?span face="Times New Roman" style="margin: 0px; padding: 0px;">value public class app { public static string value; } 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1中这栯?/span> app.value = "f2"; //l静态成员赋?/span> new Form2 ( ).Show ( ); //昄Form2 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?/span> this.Text = app.value; //取回app.value的?/span> app.value = "Form2"; //l?span face="Times New Roman" style="margin: 0px; padding: 0px;">app.value赋|以便其他H体调用 二、公共变?/span>传?/span> q种Ҏ(gu)是利用一个公共变量,先把需要的值存攑ֈq个公共变量Q然后需要的时候再通过d该变量的值来使用 例子 Form1Q?/p> public static string Form1Value; // 注意Q必ȝ明ؓ(f)static变量 private void button1_Click(object sender, EventArgs e) { Form1Value = "来自Form1"; new Form2().Show(); } Form2Q?/p> private void Form_Load(object sender, EventArgs e) { MessageBox.Show(Form1.Form1Value); } q种方式传|理解和用上都相对的单,但是Ҏ(gu)让变量串|比如W一ơ修改ؓ(f)“a”Q而第二次修改?#8220;b”Q则有可能本来需?#8220;a”值的l果变成?#8220;b”?/p> 三、静态方法方式访?/strong> q种Ҏ(gu)与传值方法的W一U有些类|是需要被其他H体讉K的方法用static定义Q以便其他传递可以直接访问到 例子Q?/p> Form1: private void button1_Click(object sender, EventArgs e) { new Form2().Show(); } public static void FF() { MessageBox.Show("Form1Ҏ(gu)"); } Form2: private void Form_Load(object sender, EventArgs e) { Form1.FF(); } 使用q种Ҏ(gu)讉K其他H体的方法,在跨H体上实现方便,但是需要需要访问到控g值则不能直接讉KQ需要将值先传递给其他H体Q再有窗体传递回来,或者存储在其他变量后对q变量进行访问?/p> 四、通过H体的公有属性?/strong> 特点Q实现简?/strong> 实现代码如下Q?/strong> 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2中定义一个公有属?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2Value,获取和设|?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1的文本?/p> public string Form2Value { get { return this.textBox1.Text; } set { this.textBox1.Text = value; } } 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1中这栯?/p> Form2 f2 = new Form2 ( ); f2.Form2Value = "Ok"; //l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">Ok f2.ShowDialog ( ); 五、通过H体的公有属性值和Owner属?/strong> 特点Q实现简?span face="Times New Roman" style="margin: 0px; padding: 0px;">,灉| 实现代码如下Q?/span> 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1?/span> public int Form1Value = 1; Form2 f2 = new Form2 ( ); f2.ShowDialog ( this ); //?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1作ؓ(f)Form2的所有者传递给Form2 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?/span> //Form2的所有者是Form1 Form1 f1 = ( Form1 ) this.Owner; //取到Form1的值是1 MessageBox.Show ( f1.Form1Value .ToString ( ) ); //l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1Value赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">222 f1.Form1Value = 222; 六?/span>通过H体的公有属性值和Application.OpenForms属?/strong> 说明Q?span face="Times New Roman" style="margin: 0px; padding: 0px;">Application.OpenForms属性:(x)获取属于应用E序的打开H体的集合?span face="Times New Roman" style="margin: 0px; padding: 0px;">(此属性在.NET Framework2.0版中) 实现代码如下Q?/span> 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1?/span> public int Form1Value = 1; Form2 f2 = new Form2 ( ); f2.Show ( ); 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?/span> string formName = "Form1"; Form fr = Application.OpenForms [ formName ]; if ( fr != null ) { Form1 f1 = ( Form1 ) fr; //取到Form1的值是1 MessageBox.Show ( f1.Form1Value.ToString ( ) ); //l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1Value赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">222 f1.Form1Value = 222; } 七、传参式传?/span> 此方法顾名思义是需要的g参数形式传递给需要值的H体 例子Q?/span> Form1Q?/span> private void button1_Click(object sender, EventArgs e) { new Form2("来自Form1").Show(); } Form2: public Form2(string value) { InitializeComponent(); MessageBox.Show(vaue); } 此种H体间传值方法明显优与第一U的传值参敎ͼ也不?x)出C数据现象Q但是需要注意修改Form2的构造函敎ͼ每个H体的默认构造函数默认都是无参数的,因此需要去修改构造函数?/span> 八、通过构造函?/strong> 特点Q传值是单向的(不可以互怼|Q实现简?/strong> 实现代码如下Q?/strong> 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?/span> int value1; string value2; public Form2 ( int value1 , string value2 ) { InitializeComponent ( ); this.value1 = value1; this.value2 = value2; } 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1中这栯?/span> new Form2 ( 111 , "222" ).Show ( ); //q样把111,"222",q?span face="Times New Roman" style="margin: 0px; padding: 0px;">2个g送给?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2 ?ji)、用委托来实现?/span> 委托可以把一个方法作为参数带入另一个方法,在窗体传gQ子H体需要执行一个方法来改变父窗体的| 而这个方法,则可以用委托从父H体传递过来。在父窗体中Q声明修Ҏ(gu)本框的方法AfterChildChangeQ在new一个子H体的时候,这个方法传递给子窗体。那么当子窗体点d步按钮时Q会(x)执行父窗体的AfterChildChangeҎ(gu)Q已辑ֈ修改文本框值的目的?/span> 例子 1、在子窗体中讄一个委托类型的属性:(x) public Action<string> AfterChangeTextDel { get; set; } 2、在子窗体同步按钮中Q?/span> if (AfterChangeTextDel != null) 3、在父窗体中dҎ(gu)Q?/span> public void AfterChildChange(string text) 4、在父窗体启动子H体按钮Q?/span> ChildFrm frm =new ChildFrm(); frm.AfterChangeTextDel = new Action<string>(this.AfterChildChange); frm.Show(); 5、这样也能实现窗体传|子窗体的委托可以在父H体 其他地方可以q行直接执行。:(x)解决此问题。微软引入了事g?/span> 十、用事g来实?/strong> 事g是委托类型的对象。它内部是用委托来实现的Q对于事件来_(d)外部只能注册自己+=Q注销自己-=,外界不可以注销其他的注册者,也不能主动触发事件。而委托则无法实现q些控制Q因此诞生了事gq话总语法?/span> 实现代码如下 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2中定义公有属?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2Value,获取和设|?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1的文本?/span> q且q定义一?span face="Times New Roman" style="margin: 0px; padding: 0px;">accept事g public string Form2Value { get { return this.textBox1.Text; } set { this.textBox1.Text = value; } } public event EventHandler accept; private void button1_Click ( object sender , EventArgs e ) { if ( accept != null ) { accept ( this , EventArgs.Empty ); //当窗体触发事Ӟ传递自w引?/span> } } 在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1?/span> Form2 f2 = new Form2 ( ); f2.accept += new EventHandler ( f2_accept ); f2.Show ( ); void f2_accept ( object sender , EventArgs e ) { //事g的接收者通过一个简单的cd转换得到Form2的引?/span> Form2 f2 = (Form2) sender; //接收?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1.Text this.textBox1.Text = f2.Form2Value; } 注:(x)在操作过E中Q发现按打印预览按钮后关闭,?x)引起WORD/EXCEL报错Q找了好久,后来直接安装OFFICE2003 SP3Q哈哈,fix the bugQ不?x)报错了?
本文来自http://www.cnblogs.com/tianfu/archive/2009/05/07/1452047.html 1.dsoframer.ocx复制到c:\windows\system32\ E序?mscorlibQ在 mscorlib.dll 中)
1.DateTime值类型代表了一个从公元0001q?????U到公元9999q?2?1?3?9?9U之间的具体日期时刻。因此,你可以用DateTime值类型来描述M在想象范围之内的旉。一个DateTimeg表了一个具体的时刻 在定义Date数据cd时候,必须注意下面三点Q?br />
{
AfterChangeTextDel(this.textBox1.Text);//执行委托
}
{
txtName.Text = text;
}
]]>
1、直接通过API把WORD/OFFICE的窗口句柄给攑ֈWINFORM中(感觉较ؓ(f)复杂Q;
2、通过WEB BROWSERQ?br />
3、利用DSOFRAMER?br />
本h都测试了一下,觉得DSOFRAMER更符合自q愿望Q故军_使用DSOFRAMER来实现?br />
操作步骤Q?br />
1、从微Y|站下蝲DsoFramer_KB311765_x86.exeQ解开得到dsoframer.ocxQ?br />
2、把dsoframer.ocx拯到系l目录下Qƈ注册Q我是写了一个reg.bat来实玎ͼ(x)
copy dsoframer.ocx c:\windows\system32\dsoframer.ocx
regsvr32.exe c:\windows\system32\dsoframer.ocx
3、启动VS2005Q新创徏一个WINFORM的C#E序Q?br />
4、在设计工具栏中Q新d选项Q在弹出的页面中选择“TAB”,然后览Q选择c:\windows\system32\dsoframer.ocxq行dQ此时设计工h中将看到q个工具Q名字ؓ(f)“DSO FRAMER CONTROL OBJECT”Q?br />
5、拖动此工具到某设计FORMH口中,此时在代码文g中添加了以下行:(x)
private AxDSOFramer.AxFramerControl axFramerControl1;
6、打开文gQthis.axFramerControl1.Open(_filePath);//注:(x)_filePath?doc或?xls为后~的文Ӟ
7、此时就可以直接在打开的WORD/EXCEL上进行编辑保存等{操作了?br />
2.双击q行regocx.bat文g
在vs2010中用dsoframer控gQ?br />1.在工L(fng)中添加项Q在COM 选项卡中选择已注册的dsoframer控g?br />2.公共控件中的DSO Framer控g拖到表单上?br />3.在DSO中打开Office文g代码Q?br />this.axFramerControl1.Open("c:\\test.xls");
4.Office文g保存的代码:(x)
this.axFramerControl1.Save("c:\\test.xls",true,"myname","mypass");
例如Q?br />
private void button1_Click(object sender, EventArgs e)
{
this.axFramerControl1.Open("C:\\Documents and Settings\\Administrator\\桌面\\复g 新徏 Microsoft Word 文档.doc");
}
private void button2_Click(object sender, EventArgs e)
{
this.axFramerControl1.Save("C:\\Documents and Settings\\Administrator\\桌面\\111111111 文档.doc", true, "myname", "mypass");
}
]]>
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add(true);
3.table时的数据Q@环遍历插入到excel中?br />
具体实例如下Q?br /> string connectionstr = "Server=192.168.1.10;database=ssh;uid=sa;pwd=1234";
string sqlstr = "select * from medstock";
SqlConnection con = new SqlConnection(connectionstr);
SqlCommand cmd = new SqlCommand(sqlstr,con);
DataSet ds = new DataSet();
DataTable db = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(cmd);//׃SqlDataAdapter自n带有数据库打开与关闭功能,所以不用手动打开数据库与关闭?br /> adp.Fill(ds,"table1");
db = ds.Tables["table1"];
//建列名,Ҏ(gu)实际情况而定Q即要在excel中显C的列名Q?br /> string[] str=new string[db.Columns.Count];
for (int i = 0; i < str.Length-2; i++)
{
str[i] = db.Columns[i+1].ColumnName;
}
//建excel实例。也是table的容器;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add(true);
//先在excel中显C出table的列名;
for (int i = 0; i < str.Length; i++)
{
excel.Cells[1, i + 1] = str[i];
}
//再向excel中@环添加表中的每一行的每一列;
if (db.Rows.Count > 0)
{
for (int i = 0; i < db.Rows.Count; i++)
{
for (int j = 1; j < db.Columns.Count; j++)
{
string str1 = db.Rows[i][j].ToString();
excel.Cells[i + 2, j] = "'" + str1;
}
}
}
//讄止弹出保存和覆盖的询问提示?nbsp;
// excel.DisplayAlerts = false;
// excel.AlertBeforeOverwriting = false;
excel.Save();//保存excel文g
excel.Quit();//保Excelq程关闭
excel.Visible = true;// 前台可见 后台q行
excel = null;
]]>
命名I间:System
2.TimeSpan值包含了许多属性与Ҏ(gu)Q用于访问或处理一个TimeSpan?br /> 下面的列表涵盖了其中的一部分Q?br /> AddQ与另一个TimeSpan值相加?
Days:q回用天数计的TimeSpan倹{?
Duration:获取TimeSpan的绝对倹{?
Hours:q回用小时计的TimeSpan?
Milliseconds:q回用毫U计的TimeSpan倹{?
Minutes:q回用分钟计的TimeSpan倹{?
Negate:q回当前实例的相反数?
Seconds:q回用秒计算的TimeSpan倹{?
Subtract:从中减去另一个TimeSpan倹{?
Ticks:q回TimeSpan值的tick数?
TotalDays:q回TimeSpanDC的天数?
TotalHours:q回TimeSpanDC的时数?
TotalMilliseconds:q回TimeSpanDC的毫秒数?
TotalMinutes:q回TimeSpanDC的分钟数?
TotalSeconds:q回TimeSpanDC的U数?br />
TimeSpan( 10, 20, 30, 40, 50 ) 10.20:30:40.0500000
TimeSpan( 1111, 2222, 3333, 4444, 5555 ) 1205.22:47:09.5550000
TimeSpan (Int32, Int32, Int32) 新?TimeSpan 初始化ؓ(f)指定的小时数、分钟数和秒数?br />
TimeSpan (Int32, Int32, Int32, Int32) 新?TimeSpan 初始化ؓ(f)指定的天数、小时数、分钟数和秒数?br />
TimeSpan (Int32, Int32, Int32, Int32, Int32) 新?TimeSpan 初始化ؓ(f)指定的天数、小时数、分钟数、秒数和毫秒数?br />
ASP.NET 中,两个旉相减Q得C?TimeSpan 实例QTimeSpan 有一些属性:(x)Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、TicksQ注意没?TotalTicks?br />
q些属性名U开始理解有些困难,但阅L文后Q相应?zhn)一定茅塞顿开?br />
举例说明
•旉 1 ?2010-1-2 8:43:35Q?
•旉 2 ?2010-1-12 8:43:34?br />
用时?2 减时?1Q得C?TimeSpan 实例?br />
那么旉 2 比时?1 ?9 ?23 时 59 ?59 U?br />
那么QDays 是 9QHours 是 23QMinutes 是 59QSeconds 是 59?br />
再来?TicksQTick 是一个计时周期,表示一癄U,即一千万分之一U,那么 Ticks 在这里表Cd相差多少个时间周期,卻I(x)9 * 24 * 3600 * 10000000 + 23 * 3600 * 10000000 + 59 * 60 * 10000000 + 59 * 10000000 = 8639990000000?600 是一时的秒数?br />
TotalDays 是?Ticks 换算成日敎ͼ卻I(x)8639990000000 / (10000000 * 24 * 3600) = 9.99998842592593?br />
TotalHours 是?Ticks 换算成小时数Q即Q?639990000000 / (10000000 * 3600) = 239.999722222222?br />
TotalMinutes 是?Ticks 换算成分钟数Q即Q?639990000000 / (10000000 * 60) = 14399.9833333333?br />
TotalSeconds 是?Ticks 换算成秒敎ͼ卻I(x)8639990000000 / (10000000) = 863999?br />
负数
上面是较晚的日期减较早的日期Q所以各属性gؓ(f)正数Q如果是较早的日期减较晚的日期,则属性gؓ(f)负数?br />
TimeSpan(
int days,
int hours,
int minutes,
int seconds
)
求离最q发表时间的函数
public string DateStringFromNow(DateTime dt)
{
TimeSpan span = DateTime.Now - dt;
if (span.TotalDays > 60)
{
return dt.ToShortDateString();
}
else if ( span.TotalDays > 30 )
{
return "1个月?;
}
else if (span.TotalDays > 14)
{
return "2周前";
}
else if (span.TotalDays > 7)
{
return "1周前";
}
else if (span.TotalDays > 1)
{
return string.Format("{0}天前", (int)Math.Floor(span.TotalDays));
}
else if (span.TotalHours > 1)
{
return string.Format("{0}时?, (int)Math.Floor(span.TotalHours));
}
else if (span.TotalMinutes > 1)
{
return string.Format("{0}分钟?, (int)Math.Floor(span.TotalMinutes));
}
else if (span.TotalSeconds >= 1)
{
return string.Format("{0}U前", (int)Math.Floor(span.TotalSeconds));
}
else
{
return "1U前";
}
}
C#中用TimeSpan计算两个旉的差?br />
可以反加两个日期之间M一个时间单位?br /> private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{string dateDiff = null;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Days.ToString()+"?+ ts.Hours.ToString()+"时"+ ts.Minutes.ToString()+"分钟"+ ts.Seconds.ToString()+"U?;
return dateDiff;
}
TimeSpan ts = Date1 - Date2;
double dDays = ts.TotalDays;//带小数的天数Q比??2时l果是1.5
int nDays = ts.Days;//整数天数Q??2时或??0时l果都是1
说明Q?br /> 1.DateTime值类型代表了一个从公元0001q?????U到公元9999q?2?1?3?9?9U之间的具体日期时刻。因此,你可以用DateTime值类型来描述M在想象范围之内的旉。一个DateTimeg表了一个具体的时刻
2.TimeSpan值包含了许多属性与Ҏ(gu)Q用于访问或处理一个TimeSpan?br /> 下面的列表涵盖了其中的一部分Q?br /> AddQ与另一个TimeSpan值相加?br /> Days:q回用天数计的TimeSpan倹{?br /> Duration:获取TimeSpan的绝对倹{?br /> Hours:q回用小时计的TimeSpan?br /> Milliseconds:q回用毫U计的TimeSpan倹{?br /> Minutes:q回用分钟计的TimeSpan倹{?br /> Negate:q回当前实例的相反数?br /> Seconds:q回用秒计算的TimeSpan倹{?br /> Subtract:从中减去另一个TimeSpan倹{?br /> Ticks:q回TimeSpan值的tick数?br /> TotalDays:q回TimeSpanDC的天数?br /> TotalHours:q回TimeSpanDC的时数?br /> TotalMilliseconds:q回TimeSpanDC的毫秒数?br /> TotalMinutes:q回TimeSpanDC的分钟数?br /> TotalSeconds:q回TimeSpanDC的U数?br />
/// <summary>
/// 日期比较
/// </summary>
/// <param name="today">当前日期</param>
/// <param name="writeDate">输入日期</param>
/// <param name="n">比较天数</param>
/// <returns>大于天数q回trueQ小于返回false</returns>
private bool CompareDate(string today, string writeDate, int n)
{
DateTime Today = Convert.ToDateTime(today);
DateTime WriteDate = Convert.ToDateTime(writeDate);
WriteDate = WriteDate.AddDays(n);
if (Today >= WriteDate)
return false;
else
return true;
}
CZ代码Q?br />
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>TimeSpan('T','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('T','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('d','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('d','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('h','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('h','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('u','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('u','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('m','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('m','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('s','2002-10-1','2002-1-1')</td>
<td> <!-- NoahValue ValueName="TimeSpan('s','2002-10-1','2002-1-1')" --></td>
</tr>
<tr>
<td>TimeSpan('D','2002-10-1','2002-1-1')</td>(责Q~辑Q麦田守望?
1. Date数值必M数字W号"#"括v来?br />
2. Date数g的日期数据可有可无,如果有必ȝ合格?m/d/yyyy"?br />
3. Date数g的时间数据可有可无,如果有必d日期数据通过I格分开Qƈ且时分秒之间?:"分开?br />
一QDateTime和TimeSpan的关pd区别Q?br />
DateTime和TimeSpan是Visual Basic .Net中用以处理时间日期类型数据的二个主要的结构,q二者的区别在于QDatTime表示一个固定的旉Q而TimeSpan表示的是一个时间间隔, 即一D|间。在下面介绍的程序示例中QTimeSpanq以当前时间和l定旉之差?br />
二.DateTime和TimeSpan中的常用成员?qing)其说明Q?br />
DateTimel构和TimeSpanl构提供了丰富的Ҏ(gu)和属性,通过q些Ҏ(gu)和属性,几乎可以直接处理M旉日期cd数据。表01和表02分别是DateTimel构的常用属性和常用Ҏ(gu)?qing)其说明Q?br />属?说明
Date 获取此实例的日期部分?br />Day 获取此实例所表示的日期ؓ(f)该月中的W几天?br />DayOfWeek 获取此实例所表示的日期是星期几?br />DayOfYear 获取此实例所表示的日期是该年中的W几天?br />Hour 获取此实例所表示日期的小旉分?br />Millisecond 获取此实例所表示日期的毫U部分?br />Minute 获取此实例所表示日期的分钟部分?br />Month 获取此实例所表示日期的月份部分?br />Now 创徏一个DateTime实例Q它是此计算Z的当前本地日期和旉?br />Second 获取此实例所表示日期的秒部分?br />TimeOfDay 获取此实例的当天的时间?br />Today 获取当前日期?br />Year 获取此实例所表示日期的年份部分?br />
?1QDateTimecȝ常用属性及(qing)其说?br />Ҏ(gu) 说明
Add 指定的TimeSpan的值加到此实例的g?br />AddDays 指定的天数加到此实例的g?br />AddHours 指定的时数加到此实例的g?br />AddMilliseconds 指定的毫秒数加到此实例的g?br />AddMinutes 指定的分钟数加到此实例的g?br />AddMonths 指定的月䆾数加到此实例的g?br />AddSeconds 指定的U数加到此实例的g?br />AddYears 指定的q䆾数加到此实例的g?br />DaysInMonth q回指定q䆾中指定月份的天数?br />IsLeapYear q回指定的年份是否ؓ(f)闰年的指C?br />Parse 日期和旉的指定字W串表示转换成其{效的DateTime实例?br />Subtract 从此实例中减L定的旉或持l时间?br />ToLongDateString 此实例的D{换ؓ(f)其等效的长日期字W串表示形式?br />ToLongTimeString 此实例的D{换ؓ(f)其等效的长时间字W串表示形式?br />ToShortTimeString 此实例的D{换ؓ(f)其等效的短时间字W串表示形式?br />ToShortDateString 此实例的D{换ؓ(f)其等效的短日期字W串表示形式?br />
?2QDateTimel构的常用方法及(qing)其说?br />
?3和表04分别是TimeSpanl构的常用属性和常用Ҏ(gu)?qing)其说明Q?br />属?说明
Days 获取由此实例表示的整天数?br />Hours 获取由此实例表示的整时数?br />Milliseconds 获取由此实例表示的整毫秒数?br />Minutes 获取由此实例表示的整分钟数?br />Seconds 获取由此实例表示的整U数?br />Ticks 获取用刻度表C的此实例的倹{?br />TotalDays 获取以整天数和天的小数部分表C的此实例的倹{?br />TotalHours 获取以整时数和时的小数部分表C的此实例的倹{?br />TotalMilliseconds 获取以整毫秒数和毫秒的小数部分表C的此实例的倹{?br />TotalMinutes 获取以整分钟数和分钟的小数部分表C的此实例的倹{?br />TotalSeconds 获取以整U数和秒的小数部分表C的此实例的倹{?br />
?3QTimeSpanl构的常用属性及(qing)其说?br />Ҏ(gu) 说明
Add 指定的TimeSpand到此实例中?br />Duration q回其gؓ(f)此实例的l对值的TimeSpan?br />FromDays q回表示指定天数的TimeSpanQ其中对天数的指定精到最接近的毫U?br />FromHours q回表示指定时数的TimeSpanQ其中对时数的指定_到最接近的毫U?br />FromMilliseconds q回表示指定毫秒数的TimeSpan?br />FromMinutes q回表示指定分钟数的TimeSpanQ其中对分钟数的指定_到最接近的毫U?br />FromSeconds q回表示指定U数的TimeSpanQ其中对U数的指定精到最接近的毫U?br />Subtract 从此实例中减L定的TimeSpan?br />
?4QTimeSpanl构的常用方法及(qing)其说?/p>
private Point FormLocation; //form的location
private Point mouseOffset; //鼠标的按下位|?br /> private void toolStrip1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
FormLocation = this.Location;
mouseOffset = Control.MousePosition;
}
}
private void toolStrip1_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
}
private void toolStrip1_MouseMove(object sender, MouseEventArgs e)
{
int _x = 0;
int _y = 0;
if (isMouseDown)
{
Point pt = Control.MousePosition;
_x = mouseOffset.X - pt.X;
_y = mouseOffset.Y - pt.Y;
this.Location = new Point(FormLocation.X - _x, FormLocation.Y - _y);
}
}
ComputeHash Ҏ(gu)q回的是哈希值字节数l,而文件的 MD5 值通常是用16q制的字W串表示Q?font face="Verdana">字节数组转换?6q制表示的字W串的方法在 System.Web.Configuration.MachineKeySection 中已l提供了一个名?span class="Apple-converted-space"> ByteArrayToHexString Ҏ(gu)Q但是该Ҏ(gu)?font face="Verdana">NonPublic 的,我们不能直接调用。这里我?font face="Verdana">通过反射来调?MachineKeySection 中的 ByteArrayToHexString Ҏ(gu)?/font>
通过反射调用 MachineKeySection 中的 ByteArrayToHexString Ҏ(gu)Q?/span>如今“MD5撞生成?#8221;的出玎ͼ?MD5 也正在面临挑战?/p>
Z介绍一?MD5 工具 Md5CheckerQMd5Checker 是一Ƒօ贏V快速、小巧、易用的文g MD5 D、验证、管理Y件。Md5Checker 的官方网站是Q?font face="Verdana">http://cn.getmd5checker.com/
数据库里有个l束旉Q?我登录的时候要获取pȝ旉?数据库里的时间做Ҏ(gu)Q没到结束时?可以d C׃可以d
this.dateTimePicker1.Value.ToString("yyyy-MM-dd");
------解决Ҏ(gu)--------------------------------------------------------
两句要同时?
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy-MM-dd";
custom
若是 DateTime.Now.ToString("yyyyqMM月dd?dddd hh:mm:ss")则显CZؓ(f)Q?***q?*?*日 星期* **Q?*Q?*
日期的替代符P(x)
格式字串
說明
d
一或二位數的日期?br />
dd
二位數的日期。個位數日期值的前面會加上零?br />
ddd
三個字元的星期^寫?br />
dddd
星期的完整名E?br />
h
12 時制的一或二位數的小時?br />
hh
12 時制的二位數小時。個位數值前面會加上零?br />
H
24 時制的一或二位數的小時?br />
HH
24 時制的二位數小時。個位數值前面會加上零?br />
m
一或二位數的分鐘?br />
mm
二位數的分鐘。個位數值前面會加上零?br />
M
一或二位數的月份?br />
MM
二位數的月䆾。個位數值前面會加上零?br />
MMM
三個字元的月䆾^寫?br />
MMMM
月䆾的完整名E?br />
s
一或二位數的秒數?br />
ss
二位數的U數。個位數值前面會加上零?br />
t
A.M./P.M. 的單一字母^寫 (A.M. 示?"A")?br />
tt
A.M./P.M. 的兩個字母縮?(A.M. 示?"AM")?br />
y
一位數的年?(2001 示?1)?br />
yy
q䆾的末二位?(2001 示?01)?br />
yyyy
完整的年?(2001 示?2001)?br />
验证中文的正则表辑ּ集合
验证所有东亚区的语aQ^[\?-\?]+$
验证体和J体Q^[\一-\?]+$
验证体:(x)^[\一-\龥]+$
使用Ҏ(gu)如下
使用Regex对象先引用System.Text.RegularExpressions
string s="^[0-9]*$";//正则表达?br style="line-height: normal" />Regex reg=new Regex(s);
if(!reg.IsMatch(this.textbox1.text))
{
MessageBox.Show("误入数?);
}
各式各样的正则表辑ּ参考大全(讉K正则表达式实例库Q:(x)
^\d+$ //匚w非负整数Q正整数 + 0Q?
//匚w整数 ^\d+(\.\d+)?$ //匚w非负点敎ͼ正QҎ(gu) + 0Q?span class="Apple-converted-space">
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匚w正QҎ(gu)
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匚w非正点敎ͼ负QҎ(gu) + 0Q?span class="Apple-converted-space">
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匚w负QҎ(gu)
^(-?\d+)(\.\d+)?$ //匚w点?span class="Apple-converted-space">
^[A-Za-z]+$ //匚w?6个英文字母组成的字符?span class="Apple-converted-space">
^[A-Z]+$ //匚w?6个英文字母的大写l成的字W串
^[a-z]+$ //匚w?6个英文字母的写l成的字W串
^[A-Za-z0-9]+$ //匚w由数字和26个英文字母组成的字符?span class="Apple-converted-space">
^\w+$ //匚w由数字?6个英文字母或者下划线l成的字W串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匚wemail地址
^[a-zA-z]+://匚w(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匚wurl
匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5]
匚w双字节字W?包括汉字在内)Q[^\x00-\xff]
匚wI的正则表辑ּQ\n[\s| ]*\r
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/>|<(.*) \/>/
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$)
匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匚w|址URL的正则表辑ּQ^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
匚w帐号是否合法(字母开_(d)允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匚w国内?sh)话L(fng)Q?\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匚w腾讯QQP(x)^[1-9]*[1-9][0-9]*$
下表是元字符?qing)其在正则表辑ּ上下文中的行为的一个完整列表,具体到每个正则表辑ּW号Q?span class="Apple-converted-space">
\ 下一个字W标Cؓ(f)一个特D字W、或一个原义字W、或一个后向引用、或一个八q制转义W?span class="Apple-converted-space">
^ 匚w输入字符串的开始位|。如果设|了 RegExp 对象的Multiline 属性,^ 也匹?’\n’ ?’\r’ 之后的位|?span class="Apple-converted-space">
$ 匚w输入字符串的l束位置。如果设|了 RegExp 对象的Multiline 属性,$ 也匹?’\n’ ?’\r’ 之前的位|?span class="Apple-converted-space">
* 匚w前面的子表达式零ơ或多次?span class="Apple-converted-space">
+ 匚w前面的子表达式一ơ或多次? {h(hun)?{1,}?span class="Apple-converted-space">
? 匚w前面的子表达式零ơ或一ơ? {h(hun)?{0,1}?span class="Apple-converted-space">
{n} n 是一个非负整敎ͼ匚w定的n ơ?span class="Apple-converted-space">
{n,} n 是一个非负整敎ͼ臛_匚wn ơ?span class="Apple-converted-space">
{n,m} m ?n 均ؓ(f)非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。在逗号和两个数之间不能有空根{?span class="Apple-converted-space">
? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串?span class="Apple-converted-space">
. 匚w?"\n" 之外的Q何单个字W。要匚w包括 ’\n’ 在内的Q何字W,请用象 ’[.\n]’ 的模式?span class="Apple-converted-space">
(pattern) 匚wpattern q获取这一匚w?(?:pattern) 匚wpattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用?(?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用?(?!pattern) 负向预查Q与(?=pattern)作用相反 x|y 匚w x ?y?span class="Apple-converted-space">
[xyz] 字符集合?span class="Apple-converted-space">
[^xyz] 负值字W集合?span class="Apple-converted-space">
[a-z] 字符范围Q匹配指定范围内的Q意字W?br style="line-height: normal" />[^a-z] 负值字W范_(d)匚wM不在指定范围内的L字符?span class="Apple-converted-space">
\b 匚w一个单词边界,也就是指单词和空格间的位|?span class="Apple-converted-space">
\B 匚w非单词边界?span class="Apple-converted-space">
\cx 匚w由x指明的控制字W?span class="Apple-converted-space">
\d 匚w一个数字字W。等价于 [0-9]?span class="Apple-converted-space">
\D 匚w一个非数字字符。等价于 [^0-9]?br style="line-height: normal" /> \f 匚w一个换늬。等价于 \x0c ?\cL?span class="Apple-converted-space">
\n 匚w一个换行符。等价于 \x0a ?\cJ?span class="Apple-converted-space">
\r 匚w一个回车符。等价于 \x0d ?\cM?span class="Apple-converted-space">
\s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于[ \f\n\r\t\v]?span class="Apple-converted-space">
\S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?span class="Apple-converted-space">
\t 匚w一个制表符。等价于 \x09 ?\cI?br style="line-height: normal" />\v 匚w一个垂直制表符。等价于 \x0b ?\cK?span class="Apple-converted-space">
\w 匚w包括下划U的M单词字符。等价于’[A-Za-z0-9_]’?br style="line-height: normal" />\W 匚wM非单词字W。等价于 ’[^A-Za-z0-9_]’?br style="line-height: normal" />\xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ(f)定的两个数字长?span class="Apple-converted-space">
\num 匚w numQ其中num是一个正整数。对所获取的匹配的引用?span class="Apple-converted-space">
\n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?span class="Apple-converted-space">
\nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ(f)八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?\nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ(f)八进制数?(0-7)Q则匚w?
--------------------------------------------------------------------------------
if(document.getElementById("personalemail").value==null || document.getElementById("personalemail").value==""){
alert("邮箱不能为空");
return false;
}else if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById("personalemail").value))){
alert("误入一个有效的邮g地址");
document.getElementById("personalemail").value="";
return false;
}
var partten = /^1[3,5]\d{9}$/;
if(document.getElementById("cellphone").value==null || document.getElementById("cellphone").value==""){
alert("手机L(fng)不能为空");
document.getElementById("cellphone").focus();
return false;
}else if(isNaN(document.getElementById("cellphone").value) && !partten.test(document.getElementById("cellphone").value)){
alert("手机L(fng)只能是数?q且只能?3?5开头ƈ且长度是11?);
document.getElementById("cellphone").focus();
return false;
}
获取文g名方法:(x)
用System.IO.Path.GetFileName和System.IO.Path.GetFileNameWithoutExtensionQ无扩展名)的方?/span>
获取文g路径Ҏ(gu)Q?/span>
//获取当前q程的完整\径,包含文g?q程??/span>
string str = this.GetType().Assembly.Location;
result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?
//获取新的 Process lgq将其与当前zd的进E关联的L块的完整路径Q包含文件名(q程??/span>
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?
//获取和设|当前目录(卌q程从中启动的目录)的完全限定\径?/span>
string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文g所在的目录)
//获取当前 Thread 的当前应用程序域的基目录Q它q序集冲突解决E序用来探测E序集?/span>
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文g所在的目录+”\”)
//获取和设|包含该应用E序的目录的名称?/span>
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文g所在的目录+”\”)
//获取启动了应用程序的可执行文件的路径Q不包括可执行文件的名称?/span>
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文g所在的目录)
//获取启动了应用程序的可执行文件的路径Q包括可执行文g的名U?/span>
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?
//获取应用E序的当前工作目?不可??/span>
string str = System.IO.Directory.GetCurrentDirectory();
result: X:\xxx\xxx (.exe文g所在的目录)
C# 获取路径中,文g名、目录、扩展名{?/span>
string path = "C:\\dir1\\dir2\\foo.txt";
string str = "GetFullPathQ? + Path.GetFullPath(path) + "\r\n";
str += "GetDirectoryNameQ? + Path.GetDirectoryName(path) + "\r\n";
str += "GetFileNameQ? + Path.GetFileName(path) + "\r\n";
str += "GetFileNameWithoutExtensionQ? + Path.GetFileNameWithoutExtension(path) + "\r\n";
str += "GetExtensionQ? + Path.GetExtension(path) + "\r\n";
str += "GetPathRootQ? + Path.GetPathRoot(path) + "\r\n";
MessageBox.Show(str);
l果Q?/span>
GetFullPathQC:\dir1\dir2\foo.txt
GetDirectoryNameQC:\dir1\dir2
GetFileNameQfoo.txt
GetFileNameWithoutExtensionQfoo
GetExtensionQ?txt
GetPathRootQC:\
q里要说?path ?/span>如何判断目录和文件名的:(x)它把最后一?\ 后面的内容当作是文g名?/span> // 内容来自js4j.com//
textBox1.SelectAll();
不过要先F(tun)ocus();
也就是先获取焦点 然后在调用上面的Ҏ(gu)
比如要选中textBox1的内?/p>
textBox1.Focus();
textBox1.SelectAll();
q样p?/p>
private void textBox1_MouseDown(object sender, MouseEventArgs e) { MonthCalendar ms = new MonthCalendar(); this.Controls.Add(ms); ms.DateChanged += new DateRangeEventHandler(ms_DateChanged); } void ms_DateChanged(object sender, DateRangeEventArgs e) { this.textBox1.Text = e.Start.Date.ToString(); }
DataRow dr = dt.Rows[n];
string dc = dr.Columns["字段?/span>"].ToString();
string dc = dr.Column[i].ToString();//i表示对应的列索引
DataRow dRow = dt.Rows[2 ]; // 从数据表提取? string textBox1.Text=dRow["CompanyName"].ToString(); // 从行中取出字D늚?/span>
双问?--用于判断q赋?先判断当前变量是否ؓ(f)null,如果是就可以赋一个新?否则跌!
d
昄月䆾的当前日期,?1 ?31 之间的一个数字表C,包括 1 ?31。如果日期只有一位数?(1-9)Q则它显CZؓ(f)一位数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“d”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准短日期模式格式说明W。如?#8220;d”格式说明W与其他自定义格式说明符或?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> dd
昄月䆾的当前日期,?1 ?31 之间的一个数字表C,包括 1 ?31。如果日期只有一位数?(1-9)Q则其格式化ؓ(f)带有前导 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ddd
昄指定?DateTime 的日期部分羃写名U。如果未提供特定的有效格式提供程序(实现h预期属性的 IFormatProvider 的非I对象)Q则使用 DateTimeFormat ?AbbreviatedDayNames 属性及(qing)其与当前所使用U程兌的当前区域性。否则,使用来自指定格式提供E序?AbbreviatedDayNames 属性?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ddddQ外加Q意数量的附加“d”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 昄指定?DateTime 的日期全名。如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则?DateTimeFormat ?DayNames 属性及(qing)其与当前所使用U程兌的当前区域性。否则,使用来自指定格式提供E序?DayNames 属性?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> f
昄U部分的最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“f”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为完整的Q长日期 + 短时_(d)格式说明W。如?#8220;f”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 使用 System.DateTime.ParseExact Ҏ(gu)q行分析Ӟ所使用?#8220;f”格式说明W的位数指示要分析的U部分的最高有效位的位数?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ff
昄U部分的两个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> fff
昄U部分的三个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ffff
昄U部分的四个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> fffff
昄U部分的五个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ffffff
昄U部分的六个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> fffffff
昄U部分的七个最高有效位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> F
昄U部分的最高有效位。如果该位ؓ(f)Ӟ则不昄M信息?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 使用 System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider) Ҏ(gu)q行分析Ӟ所使用?#8220;F”格式说明W的位数指示要分析的U部分的最高有效位最大数?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FF
昄U部分的两个最高有效位。但不显C尾随零Q或两个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FFF
昄U部分的三个最高有效位。但不显C尾随零Q或三个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FFFF
昄U部分的四个最高有效位。但不显C尾随零Q或四个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FFFFF
昄U部分的五个最高有效位。但不显C尾随零Q或五个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FFFFFF
昄U部分的六个最高有效位。但不显C尾随零Q或六个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> FFFFFFF
昄U部分的七个最高有效位。但不显C尾随零Q或七个零位Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> g ?ggQ外加Q意数量的附加“g”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 昄指定?DateTime 的年代部分(例如 A.D.Q。如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则年代由?DateTimeFormat 兌的日历及(qing)其与当前U程兌的当前区域性确定?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“g”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准常规格式说明符。如?#8220;g”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h
?1 ?12 范围中的一个数字显C指定的 DateTime 的小时数Q该时数表C午夜Q显CZؓ(f) 12Q或中午Q也昄?12Q后l过的整时数。如果单独用这U格式,则无法区别某一时是中午以前还是中午以后的旉。如果该时是单个数?(1-9)Q则它显CZؓ(f)单个数字。显C小时时不发生Q何舍入。例如,DateTime ?5:43 时返?5?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> hh, hhQ外加Q意数量的附加“h”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ?1 ?12 范围中的一个数字显C指定的 DateTime 的小时数Q该时数表C午夜Q显CZؓ(f) 12Q或中午Q也昄?12Q后l过的整时数。如果单独用这U格式,则无法区别某一时是中午以前还是中午以后的旉。如果该时是单个数?(1-9)Q则其格式化ؓ(f)前面带有 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> H
?0 ?23 范围中的一个数字显C指定的 DateTime 的小时数Q该时数表C午夜Q显CZؓ(f) 0Q后l过的整时数。如果该时是单个数?(0-9)Q则它显CZؓ(f)单个数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> HH, HHQ外加Q意数量的附加“H”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ?0 ?23 范围中的一个数字显C指定的 DateTime 的小时数Q该时数表C午夜Q显CZؓ(f) 0Q后l过的整时数。如果该时是单个数?(0-9)Q则其格式化ؓ(f)前面带有 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> m
?0 ?59 范围中的一个数字显C指定的 DateTime 的分钟数Q该分钟数表C上一时后经q的整分钟数。如果分钟是一位数?(0-9)Q则它显CZؓ(f)一位数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“m”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准的月日模式格式说明W。如?#8220;m”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> mm, mmQ外加Q意数量的附加“m”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ?0 ?59 范围中的一个数字显C指定的 DateTime 的分钟数Q该分钟数表C上一时后经q的整分钟数。如果分钟是一位数?(0-9)Q则其格式化ؓ(f)带有前导 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> M
昄月䆾Q以 1 ?12 之间Q包?1 ?12Q的一个数字表C。如果月份是一位数?(1-9)Q则它显CZؓ(f)一位数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“M”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准的月日模式格式说明W。如?#8220;M”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> MM
昄月䆾Q以 1 ?12 之间Q包?1 ?12Q的一个数字表C。如果月份是一位数?(1-9)Q则其格式化ؓ(f)带有前导 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> MMM
昄指定?DateTime 的月部分~写名称。如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则?DateTimeFormat ?AbbreviatedMonthNames 属性及(qing)其与当前U程兌的当前区域性。否则,使用来自指定格式提供E序?AbbreviatedMonthNames 属性?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> MMMM
昄指定?DateTime 的月的全名。如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则?DateTimeFormat ?MonthNames 属性及(qing)其与当前U程兌的当前区域性。否则,使用来自指定格式提供E序?MonthNames 属性?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> s
?0 ?59 范围中的一个数字显C指定的 DateTime 的秒敎ͼ该秒数表C上一分钟后经q的整秒数。如果秒是一位数?(0-9)Q则它仅昄Z位数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“s”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准的可排序日?旉模式格式说明W。如?#8220;s”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ss, ssQ外加Q意数量的附加“s”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ?0 ?59 范围中的一个数字显C指定的 DateTime 的秒敎ͼ该秒数表C上一分钟后经q的整秒数。如果秒是一位数?(0-9)Q则其格式化ؓ(f)带有前导 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> t
昄指定?DateTime ?A.M./P.M. 指示的W一个字W。如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则?DateTimeFormat ?AMDesignatorQ或 PMDesignatorQ属性及(qing)其与当前U程兌的当前区域性。否则,使用来自指定 IFormatProvider ?AMDesignatorQ或 PMDesignatorQ属性。如果对于指定的 DateTime 所l过的L时数小?12Q则使用 AMDesignator。否则,使用 PMDesignator?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“t”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准的长时间模式格式说明符。如?#8220;t”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> tt, ttQ外加Q意数量的附加“t”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 昄指定?DateTime ?A.M./P.M. 指示V如果未提供特定的有效格式提供程序(一个非I对象,可实现具有预期属性的 IFormatProviderQ,则?DateTimeFormat ?AMDesignatorQ或 PMDesignatorQ属性及(qing)其与当前U程兌的当前区域性。否则,使用来自指定 IFormatProvider ?AMDesignatorQ或 PMDesignatorQ属性。如果对于指定的 DateTime 所l过的L时数小?12Q则使用 AMDesignator。否则,使用 PMDesignator?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> y
最多用两位数字昄指定?DateTime 的年份。忽略年的前两位数字。如果年份是一位数?(1-9)Q则它显CZؓ(f)一位数字?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果“y”格式说明W单独用,没有其他自定义格式字W串Q则它被解释为标准短日期模式格式说明W。如?#8220;y”格式说明W与其他自定义格式说明符?#8220;%”字符一起传递,则它被解释ؓ(f)自定义格式说明符?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> yy
最多用两位数字昄指定?DateTime 的年份。忽略年的前两位数字。如果年份是一位数?(1-9)Q则其格式化ؓ(f)带有前导 0 (01-09)?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> yyyy
昄指定?DateTime 的年份部分(包括U元Q。如果年份长度小于四位,则按需要在前面q加零以使显C的q䆾长度辑ֈ四位?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> z
仅以整小时数为单位显C系l当前时区的时区偏移量。偏U量LCZؓ(f)带有前导W号Q零昄?#8220;+0”Q,指示早于格林威治旉 (+) 或迟于格林威L?(-) 的小时数。值的范围?-12 ?+13。如果偏U量Z位数 (0-9)Q则其昄为带有合适前导符L(fng)一位数。时|以 +X ?–X 的Ş式指定,其中 X 是相对于 GMT 的小时偏差。显C的偏差受夏时制的媄响?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> zz
仅以整小时数为单位显C系l当前时区的时区偏移量。偏U量LCZؓ(f)带有前导或尾随符P零显CZؓ(f)“+00”Q,指示早于格林威治旉 (+) 或迟于格林威L?(-) 的小时数。D围ؓ(f) -12 ?+13。如果偏U量Z位数 (0-9)Q则其格式化ؓ(f)前面带有 0 (01-09) q带有适当的前导符受时|以 +X ?–X 的Ş式指定,其中 X 是相对于 GMT 的小时偏差。显C的偏差受夏时制的媄响?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> zzz, zzzQ外加Q意数量的附加“z”字符Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> 以小时和分钟为单位显C系l当前时区的时区偏移量。偏U量L昄为带有前导或NW号Q零昄?#8220;+00:00”Q,指示早于格林威治旉 (+) 或迟于格林威L?(-) 的小时数。D围ؓ(f) -12:00 ?+13:00。如果偏U量Z位数 (0-9)Q则其格式化ؓ(f)前面带有 0 (01-09) q带有适当的前导符受时|以 +X ?–X 的Ş式指定,其中 X 是相对于 GMT 的小时偏差。显C的偏差受夏时制的媄响?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> :
旉分隔W?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> /
日期分隔W?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> "
带引L(fng)字符丌Ӏ显C{义符 (/) 之后两个引号之间的Q何字W串的文本倹{?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> '
带引L(fng)字符丌Ӏ显CZ?#8220;'”字符之间的Q何字W串的文本倹{?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> %c
其中 c 既是标准格式说明W又是自定义格式说明W,昄与格式说明符兌的自定义格式模式?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> h意,如果格式说明W作为单个字W来单独使用Q它?yu)被解释成标准格式说明符。只有包含两个或更多字符的格式说明符被解释ؓ(f)自定义格式说明符。说明符可以被同时定义ؓ(f)标准和自定义格式说明W,要显C此U说明符的自定义格式Q请在说明符之前?#8220;%”W号?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> \c
其中 c 是Q意字W,转义W将下一个字W显CZؓ(f)文本。在此上下文中,转义W不能用于创{义序列(?#8220;\n”表示换行Q?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> M其他字符
其他字符作ؓ(f)文本直接写入输出字符丌Ӏ?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> ?DateTime.ToString 传递自定义模式Ӟ模式必须臛_Z个字W长。如果只传?#8220;d”Q则公共语言q行库将其解释ؓ(f)标准格式说明W,q是因ؓ(f)所有单个格式说明符都被解释为标准格式说明符。如果传递单?#8220;h”Q则引发异常Q原因是不存在标准的“h”格式说明W。若要只使用单个自定义格式进行格式化Q请在说明符的前面或后面d一个空根{例如,格式字符?#8220;h”被解释ؓ(f)自定义格式字W串?/p>
基本函数用法
//今天
DateTime.Now.Date.ToShortDateString();
//昨天
DateTime.Now.AddDays(-1).ToShortDateString();
//明天
DateTime.Now.AddDays(1).ToShortDateString();
//本周(每一周是从周日始臛_六止)
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
//上周(本周再减??
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
//下周
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
//本月
//一般的写法
DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //W一?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> //用C#里ToString的字W格式化更简?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上个月,减去一个月?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下个月,加去一个月?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();
//7天后
DateTime.Now.Date.ToShortDateString();
DateTime.Now.AddDays(7).ToShortDateString();
//7天前
DateTime.Now.AddDays(-7).ToShortDateString();
DateTime.Now.Date.ToShortDateString();
//本年?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();
//上年?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
//下年?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();
//一q四个季度,一个季度三个月
//首先我们先把日期推到本季度第一个月Q然后这个月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
//同理Q本季度的最后一天就是下季度的第一天减一
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下季?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//上季?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /> DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();