c# int型转化为 日期类型! 20

我在c#中添加一个textbox控件,用于查询某一天的记录。比如我在textbox中输入20130826可以查询到数据库中时间为2013-08-26的所有记录!数据库中的... 我在c#中 添加一个textbox控件,用于查询某一天的记录。 比如我在textbox中输入20130826 可以查询到数据库中时间为2013-08-26 的所有记录!数据库中的时间类型设置的就是yyyy-MM-dd 我的问题件 就是数据类型我不会转化,谢谢大家给我建议! 在线跪求!!! 展开
 我来答
xiangjuan314
2015-11-11 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2907万
展开全部

c# 各数据类型转换

1、数据类型的类名

这里讲的数据的类名指的是: Sytem.data.DbType对应的类型,我是这样理解的。

类名 System中相对应的类型

bool System.Boolean (布尔型,其值为 true 或者 false)

char System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)

byte System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)

sbyte System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)

ushort System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)

uint System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)

ulong System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)

short System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)

int System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)

long System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方到 10 的 19 次方)

float System.Single (单精度浮点型,占 4 个字节)

double System.Double (双精度浮点型,占 8 个字节)

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TypeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
bool bo = true;
byte b = 9;
char c = 'a';
sbyte sb = 8;
short s = 8;
int i= 7;
uint u = 6;
long l = 5;
this.textBox1.Text = "typetest";
this.textBox1.AppendText("bool -> " + bo.GetType().FullName + ""n");
this.textBox1.AppendText("byte -> " + b.GetType().FullName + ""n");
this.textBox1.AppendText("char -> " + c.GetType().FullName + ""n");
this.textBox1.AppendText("sbyte -> " + sb.GetType().FullName + ""n");
this.textBox1.AppendText("short -> " +s.GetType().FullName + ""n");
this.textBox1.AppendText("int -> " + i.GetType().FullName + ""n");
this.textBox1.AppendText("uint -> " +u.GetType().FullName + ""n");
this.textBox1.AppendText("long -> " +l.GetType().FullName + ""n");
//其实类型就不写上,自己可以真接加上去!
}
}
}

结果可看到:

typetestbool -> System.Boolean

byte -> System.Byte

char -> System.Char

sbyte -> System.SByte

short -> System.Int16

int -> System.Int32

uint -> System.UInt32

long -> System.Int64

//

说明,以后所编的代码都是写在private void Form1_Load(object sender, EventArgs e)中的


2、Value Type间的转换。

bool bo = true;
byte b = 9;
char c = 'a';
sbyte sb = 8;
short s = 8;
int i = 7;
uint u = 6;
long l = 5;
this.textBox1.Text = "datatype";
this.textBox1.AppendText("bool bo=" + bo.ToString() + ""n");
this.textBox1.AppendText("byte b= " + b.ToString() + ""n");
this.textBox1.AppendText("char c= " + c.ToString() + ""n");
this.textBox1.AppendText("sbyte sb= " + sb.ToString() + ""n");
this.textBox1.AppendText("short s= " + s.ToString() + ""n");
this.textBox1.AppendText("int i= " + i.ToString() + ""n");
this.textBox1.AppendText("uint u=" + u.ToString() + ""n");
this.textBox1.AppendText("long l= " + l.ToString() + ""n");

此段代码并没有转换数据类型,只说明它们的类型公别还是System.bool型…System.long型。

追加一行:int g = 1;

short h = g;

this.textBox1.AppendText("h = " + h.ToString() + ""n");

结果编译报错:

G:"Projects"Visual C#"Convert"Form1.cs(118): 无法将类型“int”隐式转换为“short”

数据要进行强制转换。

如上例修改如下:

short g = 1;

byte h = (byte) g; // 将 short 型的 g 的值强制转换成byte型后再赋给变量 h

this.textBox1.AppendText("h = " + h.ToString() + ""n");

就可以了!

Short->byte

short g = 265; //265 = 255 + 10

byte h = (byte) g;

this.textBox1.AppendText("h = " + h.ToString() + ""n");

注意:溢出问题!

3、ASCII<->Unicode


char ch = 'a';
short ii = 65;
this.textBox1.Text = "";
this.textBox1.AppendText("The ASCII code of "'" + ch + ""' is: " + (short)ch + ""n");
this.textBox1.AppendText("ASCII is " + ii.ToString() + ", the char is: " + (char)ii + ""n");
char name1 = '屈';
char name2 = '志';
short name3 = 21195;
this.textBox1.AppendText("The Unicode of "'" + name1 + ""' is: " + (short)name1 + ""n");
this.textBox1.AppendText("The Unicode of "'" + name2 + ""' is: " + (short)name2+ ""n");
this.textBox1.AppendText("Unicode is " + name3.ToString() + ", the name3 is: " + (char)name3 + ""n");
它的运行结果是
The ASCII code of 'a' is: 97
ASCII is 65, the char is: A
The Unicode of '屈' is: 23624
The Unicode of '志' is: 24535
Unicode is 21195, the name3 is: 勋


4、int<->string

float f = 12.3f;
string str = "258";
this.textBox1.Text = "";
this.textBox1.AppendText("f = " + f.ToString() + ""n");//float->string
if (int.Parse(str) == 258) //string->int
{
this.textBox1.AppendText("str convert to int successfully.");
}
else
{
this.textBox1.AppendText("str convert to int failed.");

5、String<->char[]

string str = "quzhixun";
char[] chars = str.ToCharArray();//string->char[]
this.textBox1.Text = "";
this.textBox1.AppendText("Length of ""quzhixun"" is " + str.Length + ""n");
this.textBox1.AppendText("Length of char array is " + chars.Length + ""n");
this.textBox1.AppendText("char[2] = " + chars[2] + ""n");
char[] name = { 'q', 'u', 'z', 'h', 'i', 'x', 'u','n' };
string sname = new String(name);//char[]->string
this.textBox1.AppendText("sname = """ + sname + """"n");

6、String<->byte[]

string s = "hi,屈志勋";
byte[] b1 = System.Text.Encoding.Default.GetBytes(s);//sting->byte[],半个英文1个字节,汉字2 个字节。
byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s); //sting->byte[],都是两个字节。
string t1 = "", t2 = "";
foreach (byte b in b1)
{
t1 += b.ToString("") + " ";
}
foreach (byte b in b2)
{
t2 += b.ToString("") + " ";
}
this.textBox1.Text = "";
this.textBox1.AppendText("b1.Length = " + b1.Length + ""n");
this.textBox1.AppendText(t1 + ""n");
this.textBox1.AppendText("b2.Length = " + b2.Length + ""n");
this.textBox1.AppendText(t2 + ""n");
//
byte[] b = { 65, 66, 67 };
string s = System.Text.Encoding.ASCII.GetString(b);//byte[]->string
this.textBox1.AppendText("The string is: " + s + ""n");

//

7、转换十六进制

int a = 159357;
this.textBox1.Text = "";
this.textBox1.AppendText("a(10) = " + a.ToString() + ""n");
this.textBox1.AppendText("a(16) = " + a.ToString("x6") + ""n");
this.textBox1.AppendText("a(16) = " + a.ToString("X6") + ""n");

8、DateTime<->long

double doubleDate = DateTime.Now.ToOADate();//按原来的double值输出,DateTime->long
DateTime theDate = DateTime.FromOADate(doubleDate);//从原来的的double值获得System.DateTime对象,long->DateTime
this.textBox1.Text = "";
this.textBox1.AppendText("Double value of now: " + doubleDate.ToString() + ""n");
this.textBox1.AppendText("DateTime from double value: " + theDate.ToString() + ""n");

//

9、form DateTime

DateTime now = DateTime.Now;
string format;
this.textBox1.Text = "";
format = """year"":yyyy,""month"":MM,""day"":dd HH:mm:ss";
this.textBox1.AppendText(format + ": " + now.ToString(format) + ""n");
format = "yy年M日d日";
this.textBox1.AppendText(format + ": " + now.ToString(format) + ""n");
祎正谊25
2013-09-02 · TA获得超过156个赞
知道小有建树答主
回答量:430
采纳率:75%
帮助的人:214万
展开全部
string datetime = String.Format("{0}-{1}-{2}", textBox1.Text.Substring(0, 4), textBox1.Text.Substring(4, 2), textBox1.Text.Substring(6, 2));
将你所输入的前八位数字转换为对应的时间格式。
例如20130826,转换后变为2013-08-26,而后进行查询。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2013-09-02 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7838万
展开全部

由于你没有贴具体代码,因此给你思路,也不难测试。

  1. 获取textbox的文本后,根据数据的位拆分用substring函数为年月日;

  2. 根据上述年月日可以使用DateTime的构造函数获得一个DateTime类型;

  3. sql语句里面你要使用DateDiff函数,判断数据库日期与输入日期是否为同一天

  4. 使用参数化查询,直接代入DateTime类型的参数,而不比较string是为了避免时分秒带来的误差

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亓官妍07K
推荐于2018-04-11 · TA获得超过252个赞
知道答主
回答量:342
采纳率:100%
帮助的人:151万
展开全部
            string strTime = "20130826";
            strTime = strTime.Substring(0, 4) + "-" + strTime.Substring(4, 2) + "-" + strTime.Substring(6,2);
            DateTime dtTime = DateTime.Parse(strTime);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
asdfv63
2013-09-02 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:100%
帮助的人:121万
展开全部
string str = textBox1.Text.Substring(0, 4) + "-" + textBox1.Text.Substring(4, 2) + "-" + textBox1.Text.Substring(6, 2);

建议使用日期的那个控件,用文本框还要考虑单引号问题的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式