以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教,有关日期格式显示不对?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7774)

--  作者:baoxyang
--  发布时间:2010/8/4 17:06:00
--  请教,有关日期格式显示不对?

Dim dtset1 As new System.Data.DataSet()   ‘从外部引用数据

Dim th As Data.datatable = dtset1.Tables(0)
dtset1.Tables.Remove(th)
Tables("车辆状态管理_Table2").DataSource = th 
DataTables("车辆状态管理_Table2").DataCols("uploadtime").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)

“uploadtime”是外部获取数据的一个日期列,但在 DataTables("车辆状态管理_Table2")表中“uploadtime”看到的数据是“2010-08-04 13:25:13”

如果用messagebox.show(dr(“uploadtime”))时显示的内容为“10-08-04 13:25:13”,请问这是怎回事呀?


--  作者:狐狸爸爸
--  发布时间:2010/8/4 17:16:00
--  
 和操作系统的日期格式设置有关吧
--  作者:baoxyang
--  发布时间:2010/8/4 17:24:00
--  
以下是引用狐狸爸爸在2010-8-4 17:16:00的发言:
 和操作系统的日期格式设置有关吧

应当没有其它正常,只有这个会出现这个情况,估计

dtset1.Tables.Remove(th)
Tables("车辆状态管理_Table2").DataSource = th 
DataTables("车辆状态管理_Table2").DataCols("uploadtime").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)

代码有存在这方面的吧。不知如何解决?请老大指点下!!

有点奇怪,看到的数据与显示的数据怎么不一致呢?晕!!!

[此贴子已经被作者于2010-8-4 17:25:19编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/4 17:27:00
--  

代码没有问题。

 

下面的代码如何显示,由系统设置决定:

 

messagebox.show(dr(“uploadtime”))

 

如果默认的显示结果不符合心意,可以用Format函数格式化。


--  作者:baoxyang
--  发布时间:2010/8/4 17:28:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:baoxyang
--  发布时间:2010/8/4 17:30:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

显示的是最后一行日期列数据的

[此贴子已经被作者于2010-8-4 17:31:06编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/4 17:34:00
--  
我4楼解释得很清楚啊
--  作者:lxl
--  发布时间:2010/8/4 17:48:00
--  

先说结果:

Dim dt As DateTime  = dr(“uploadtime”)

MessageBox.Show(dt.ToString("F"))

 

时间类型DateTime转换成字符串String有很多很多转换方式。(比如国家地区差异,比如简单日期,完整日期的差异)

所以.net里面有很大一章节来控制日期的格式化。

你如果有时间和兴趣可以参考这里:

 http://msdn.microsoft.com/zh-cn/library/97x6twsz(v=VS.90).aspx

不过一般记住几个常用的就行:

ToString("D")  长日期格式

ToString("d") 短日期格式

ToString("F") 长日期时间

ToString("f") 短日期时间

ToString("G")  常规日期格式。效果和直接ToString()一样

 

上面几种是标准的格式化方式,你也可以用自定义的方式

ToString("yyyy年MM月")

 

 

 

 

 


--  作者:lxl
--  发布时间:2010/8/4 17:56:00
--  

messagebox.show(dr(“uploadtime”))时显示的内容为“10-08-04 13:25:13”

原因是:

dr(“uploadtime”) 是一个object类型

(编译器只知道他是一个对象,不知道是他是时间对象。)

所以执行messagebox.show(dr(“uploadtime”)) 有一个Object到String的隐式转换

相当于messagebox.show(dr(“uploadtime”).ToSting())

我8楼说过,对时间调用ToString() 相当于ToString("G")

而采用G(常规日期格式)来格式话时间,显示的是:短日期+ 长时间 

如果你在控制面板里面修改过短日期 或者长时间。 那也会影响结果  

 

 

 


--  作者:baoxyang
--  发布时间:2010/8/5 9:51:00
--  

非常感谢lxl版主的详细讲解及引导,谢谢你热情帮助!!!

已处理OK!