写一个方法,要是这样的,方法返回的是字符串类型的提示语,例如:
2008-11-18 5:18:46.177 要这样显示: 今天5时
2008-11-17 6:07:15.177 要这样显示: 昨天6时
2008-11-16 9:26:36.177 要这样显示: 前天9时
2008-11-15 9:18:50.177 超过前天的就显示年月日,即显示: 2008-11-15
...
private string toFolksyDate(DateTime pTime)
{
......
return pTime.ToString("yy-MM-dd");
}.net刚学,有些数据类型这块的加减法都没搞懂,请诸各抒已见帮一下
2008-11-18 5:18:46.177 要这样显示: 今天5时
2008-11-17 6:07:15.177 要这样显示: 昨天6时
2008-11-16 9:26:36.177 要这样显示: 前天9时
2008-11-15 9:18:50.177 超过前天的就显示年月日,即显示: 2008-11-15
...
private string toFolksyDate(DateTime pTime)
{
......
return pTime.ToString("yy-MM-dd");
}.net刚学,有些数据类型这块的加减法都没搞懂,请诸各抒已见帮一下
解决方案 »
- 大家看下,这个sql语句怎么写
- 关于读屏软件在读取密码输入时的问题
- 各位高手,谁有vs2005个人版下载地址啊
- StatusStrip的bug
- 使用System.Xml.XmlDocument来创建的问题?!
- 求telnet源码
- 关于发邮件的问题
- .net4.0中,wcf的数据契约上可以不用写DataContract和DataMember标签了么?
- C#+定义UserControl+时,鼠标拉动会触发Ctrl+C 怎么处理
- 请问:为什么不能通过我写的winform程序向数据库添加'.'呢?
- 请问如何检测局域网中某些机器(已知其IP)的当前开机或关机状态
- 多线程的TCP类似聊天程序,刚开始写到连接部分就有问题,高手帮看看~~~
DateTime yesterday = dtNow.AddDays(-1);
DateTime dayBeforeYesterday = dtNow.AddDays(-2);
TimeSpan ts = (dtNow - yesterday);ts.Days;ts.Hours
private string GetString(DateTime dt)
{
if(dt<DateTime.Nos.AddDays(-2).Date) return dt.ToString("yyyy-MM-dd");
else
{
...
return ...
}
}
{
DateTime nowtime = DateTime.Now;
//DateTime yesterday = nowtime.AddDays(-1);
//DateTime dayBeforeYesterday = nowtime.AddDays(-2);
TimeSpan ts = nowtime - vTime;
if (ts.Days == 0)
{
return "今天" + vTime.ToString("hh") + "时";
}
else if (ts.Days == 1)
{
return "昨天" + vTime.ToString("hh") + "时";
}
else if (ts.Days == 0)
{
return "前天" + vTime.ToString("hh") + "时";
}
else
{
return vTime.ToString("yy-MM-dd");
}
//return ts.Days.ToString();
}我根据一楼的bloodish给了点启发,但这样写出来貌似应该是对的...
但当我代入
2008-11-17 21:21:51 显示:今天09时
2008-11-17 9:43:10 显示:昨天09时这显然不正确啊,再帮忙看看... :)
private string ConvertDay(DateTime vTime)
{
DateTime nowtime = DateTime.Now;
if (vTime.ToString("yy-MM-dd") == nowtime.ToString("yy-MM-dd"))
{
return "今天" + vTime.ToString("hh") + "时";
}
else if (vTime.ToString("yy-MM-dd") == nowtime.AddDays(-1).ToString("yy-MM-dd"))
{
return "昨天" + vTime.ToString("hh") + "时";
}
else if (vTime.ToString("yy-MM-dd") == nowtime.AddDays(-2).ToString("yy-MM-dd"))
{
return "前天" + vTime.ToString("hh") + "时";
}
else
{
return vTime.ToString("yy-MM-dd");
}
}
这里hh改成HH就好了。
2008-11-17 9:43:10 显示:昨天09时 ----->这里错了....以下是综合楼上的热心朋友给到的意见写成的,也不知道是不是最优化的...请诸位指教private string ConvertDay(DateTime vTime)
{
DateTime nowtime = DateTime.Now;
TimeSpan ts = nowtime.Date-vTime.Date;// ------------------>这里是综合min_jie的意见
if (ts.Days == 0)
{
return "今天" + vTime.ToString("HH") + "时";
}
else if (ts.Days == 1)
{
return "昨天" + vTime.ToString("HH") + "时";
}
else if (ts.Days == 2)
{
return "前天" + vTime.ToString("HH") + "时";
}
else
{
return vTime.ToString("yy-MM-dd");
}
//return ts.Days.ToString();
}
可以。。如果你想把09时的0去掉的话,还可以只用一个H
当然,如果写成switch的话代码会更直观一些。。
呵,以前我同事说switch运行效率不高,不知是真还是假,所以我在心里就养成的一种屏蔽的习惯了。因为我这里用在repeater控件中的对数据库中的数据进行显示,固然数据量很大,所以我选择用if了.嗯,若是一般的调用在这里用switch是个不错的选择,谢谢min_jie
--------------------------------------------------------------------------------输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误:
行 311: else if (ts.Days == 1)
行 312: {
行 313: return "昨天" + vTime.ToString("H") + "时";
行 314: }
行 315: else if (ts.Days == 2)
当格式化字符是单个字符时,必须是以下的字符,否则就会异常。。d
ShortDatePattern
D
LongDatePattern
f
完整日期和时间(长日期和短时间)
F
FullDateTimePattern(长日期和长时间)
g
常规(短日期和短时间)
G
常规(短日期和长时间)
m、M
MonthDayPattern
o、O
往返日期/时间模式;在这种格式模式下,格式设置或分析操作始终使用固定区域性
r、R
RFC1123Pattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性
s
使用本地时间的 SortableDateTimePattern(基于 ISO 8601);在这种格式模式下,格式设置或分析操作始终使用固定区域性
t
ShortTimePattern
T
LongTimePattern
u
使用通用时间显示格式的 UniversalSortableDateTimePattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性
U
使用通用时间的完整日期和时间(长日期和长时间)
y、Y
YearMonthPattern