Datetime转换成多少年多少月多少日多时多少分多少秒 如何转换效率高? c#Datetime转换 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用DateTime干啥?不是有TimeSpan给你用么? DateTime.DayDateTime.HourDateTime.MinutesDateTime.Seconds为DateTime写个扩展方法 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的 DateTime.TryParseDateTime.Parse这俩方法不行的话,你就用正则吧 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString(); 是能转成DateTime了,但是还是有问题。 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); string str = d1.Day.ToString() + "天" + d1.Hour.ToString() + "小时" + d1.Minute.ToString() + "分钟" + d1.Second.ToString() + "秒"; MessageBox.Show(str); TimeSpan interval = new TimeSpan(d1.Ticks); MessageBox.Show(interval.ToString());结果是1天0小时0分钟0秒和00:00:00 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString();不行额 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); TimeSpan timeSpan = d1 - DateTime.MinValue; MessageBox.Show(timeSpan.ToString());这个结果是00:00:00 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString();不行额 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); TimeSpan timeSpan = d1 - DateTime.MinValue; MessageBox.Show(timeSpan.ToString());这个结果是00:00:00你的TryParse本来就失败了c#的时间从0000-01-01开始,你的出错了怎么能继续下去 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString();不行额 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); TimeSpan timeSpan = d1 - DateTime.MinValue; MessageBox.Show(timeSpan.ToString());这个结果是00:00:00你的TryParse本来就失败了c#的时间从0000-01-01开始,你的出错了怎么能继续下去TryParse后的结果是0001/1/1 0:00:00。那这个怎么整 这是从数据库取的数据 = =数据库里也不能设计为DateTime对应的类型。应该设计为Time对应的,或者设计为long对应的类型。 DateTime.TryParse(DateTime.Now.ToString(), out d1);这样没问题的吖 这是从数据库取的数据 = =数据库里也不能设计为DateTime对应的类型。应该设计为Time对应的,或者设计为long对应的类型。因为时间会从1年到几秒不等 Time的范围是-838:59:59到838:59:59 满足不了要求 是能转成DateTime了,但是还是有问题。 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); string str = d1.Day.ToString() + "天" + d1.Hour.ToString() + "小时" + d1.Minute.ToString() + "分钟" + d1.Second.ToString() + "秒"; MessageBox.Show(str); TimeSpan interval = new TimeSpan(d1.Ticks); MessageBox.Show(interval.ToString());结果是1天0小时0分钟0秒和00:00:00出错是因为0000-00-05 年份和月份不能为0.你改成0001-01-05应该就没事 额 我的数据是从Mysql中取的不是Now... 给String写个扩展方法就好了。你自己去写ToRightString()方法。 class Program { static void Main(string[] args) { string date = "0000-00-05 23:50:00"; Console.WriteLine( date.ToRightString()); Console.Read(); } } static class String { public static string ToRightString(this string str) { string result = string.Empty; var list = str.Split(new char[] { ' ', ':', '-' }); if (list.Count() > 5) { int tmp = int.Parse(list[0]); if (tmp > 0) result += tmp.ToString() + "年"; tmp = int.Parse(list[1]); if (tmp > 0) result += tmp.ToString() + "月"; tmp = int.Parse(list[2]); if (tmp > 0) result += tmp.ToString() + "日"; tmp = int.Parse(list[3]); if (tmp > 0) result += tmp.ToString() + "时"; tmp = int.Parse(list[4]); if (tmp > 0) result += tmp.ToString() + "分"; tmp = int.Parse(list[4]); if (tmp > 0) result += tmp.ToString() + "秒"; } return result; } } 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString();不行额 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); TimeSpan timeSpan = d1 - DateTime.MinValue; MessageBox.Show(timeSpan.ToString());这个结果是00:00:00你的TryParse本来就失败了c#的时间从0000-01-01开始,你的出错了怎么能继续下去TryParse后的结果是0001/1/1 0:00:00。那这个怎么整你的mysql字段类型用BIGINT吧然后用TimeSpan.FromTicks(long)转成TimeSpan 额不好意思我没说清楚 是Mysql的datetime转换 这种0000-00-05 23:50:00格式在c#中是没法转成datetime的DateTime data;TimeSpan timeSpan= data - DateTime.MinValue;timeSpan.ToString();不行额 string date = "0000-00-05 23:50:00"; DateTime d1; DateTime.TryParse(date, out d1); TimeSpan timeSpan = d1 - DateTime.MinValue; MessageBox.Show(timeSpan.ToString());这个结果是00:00:00你的TryParse本来就失败了c#的时间从0000-01-01开始,你的出错了怎么能继续下去TryParse后的结果是0001/1/1 0:00:00。那这个怎么整你的mysql字段类型用BIGINT吧然后用TimeSpan.FromTicks(long)转成TimeSpan回头我问问数据库能不能改,谢谢啦 貌似这样能够的格式不能存在SQL吧 C# 方法重载问题? 解释下ado.net连接的事务锁定行为 C#窗体 设计窗口停靠问题 如何实现日历的动态弹出? C#,WinForm中,如何实现DataGrid的多行表头(要实现表头相同内容的合并) 请问 C# 中,自己重写拖动标题栏移动窗口应该重载在个方法呀? C#限制软件一天只能运行3次,怎么解决? 关于IE6中使用smsx.cab打印的问题! 自动提示更新或是备份是如何做的? 中文问题,泛型类问题~ 多线程Socket编程,程序走到socket.Accept()就不继续向下运行了 vs2013中还有单元测试向导吗?就是下边这个图
不是有TimeSpan给你用么?
DateTime.Hour
DateTime.Minutes
DateTime.Seconds为DateTime写个扩展方法
DateTime.Parse
这俩方法不行的话,你就用正则吧
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
DateTime d1;
DateTime.TryParse(date, out d1);
string str = d1.Day.ToString() + "天" + d1.Hour.ToString() + "小时" + d1.Minute.ToString() + "分钟" + d1.Second.ToString() + "秒";
MessageBox.Show(str);
TimeSpan interval = new TimeSpan(d1.Ticks);
MessageBox.Show(interval.ToString());结果是
1天0小时0分钟0秒
和
00:00:00
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
不行额 string date = "0000-00-05 23:50:00";
DateTime d1;
DateTime.TryParse(date, out d1);
TimeSpan timeSpan = d1 - DateTime.MinValue;
MessageBox.Show(timeSpan.ToString());这个结果是00:00:00
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
不行额 string date = "0000-00-05 23:50:00";
DateTime d1;
DateTime.TryParse(date, out d1);
TimeSpan timeSpan = d1 - DateTime.MinValue;
MessageBox.Show(timeSpan.ToString());这个结果是00:00:00
你的TryParse本来就失败了
c#的时间从0000-01-01开始,你的出错了怎么能继续下去
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
不行额 string date = "0000-00-05 23:50:00";
DateTime d1;
DateTime.TryParse(date, out d1);
TimeSpan timeSpan = d1 - DateTime.MinValue;
MessageBox.Show(timeSpan.ToString());这个结果是00:00:00
你的TryParse本来就失败了
c#的时间从0000-01-01开始,你的出错了怎么能继续下去
TryParse后的结果是0001/1/1 0:00:00。
那这个怎么整
这样没问题的吖
因为时间会从1年到几秒不等 Time的范围是-838:59:59到838:59:59 满足不了要求
DateTime d1;
DateTime.TryParse(date, out d1);
string str = d1.Day.ToString() + "天" + d1.Hour.ToString() + "小时" + d1.Minute.ToString() + "分钟" + d1.Second.ToString() + "秒";
MessageBox.Show(str);
TimeSpan interval = new TimeSpan(d1.Ticks);
MessageBox.Show(interval.ToString());结果是
1天0小时0分钟0秒
和
00:00:00出错是因为0000-00-05 年份和月份不能为0.你改成0001-01-05应该就没事
{
static void Main(string[] args)
{
string date = "0000-00-05 23:50:00";
Console.WriteLine( date.ToRightString());
Console.Read();
}
}
static class String
{
public static string ToRightString(this string str)
{
string result = string.Empty;
var list = str.Split(new char[] { ' ', ':', '-' });
if (list.Count() > 5)
{
int tmp = int.Parse(list[0]);
if (tmp > 0)
result += tmp.ToString() + "年";
tmp = int.Parse(list[1]);
if (tmp > 0)
result += tmp.ToString() + "月";
tmp = int.Parse(list[2]);
if (tmp > 0)
result += tmp.ToString() + "日";
tmp = int.Parse(list[3]);
if (tmp > 0)
result += tmp.ToString() + "时";
tmp = int.Parse(list[4]);
if (tmp > 0)
result += tmp.ToString() + "分";
tmp = int.Parse(list[4]);
if (tmp > 0)
result += tmp.ToString() + "秒";
}
return result;
}
}
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
不行额 string date = "0000-00-05 23:50:00";
DateTime d1;
DateTime.TryParse(date, out d1);
TimeSpan timeSpan = d1 - DateTime.MinValue;
MessageBox.Show(timeSpan.ToString());这个结果是00:00:00
你的TryParse本来就失败了
c#的时间从0000-01-01开始,你的出错了怎么能继续下去
TryParse后的结果是0001/1/1 0:00:00。
那这个怎么整
你的mysql字段类型用BIGINT吧
然后用TimeSpan.FromTicks(long)转成TimeSpan
TimeSpan timeSpan= data - DateTime.MinValue;
timeSpan.ToString();
不行额 string date = "0000-00-05 23:50:00";
DateTime d1;
DateTime.TryParse(date, out d1);
TimeSpan timeSpan = d1 - DateTime.MinValue;
MessageBox.Show(timeSpan.ToString());这个结果是00:00:00
你的TryParse本来就失败了
c#的时间从0000-01-01开始,你的出错了怎么能继续下去
TryParse后的结果是0001/1/1 0:00:00。
那这个怎么整
你的mysql字段类型用BIGINT吧
然后用TimeSpan.FromTicks(long)转成TimeSpan
回头我问问数据库能不能改,谢谢啦