部署后,网站显示的日期格式和本机的不一样

城市猎人0611 2008-10-14 03:32:53
本机VS2005开发的网站在本地测试,GridView(或其他控件)显示的日期格式:2008-09-01 17:33:29
我部署到公司服务器后,用本机测试却显示为:9/1/2008 9:00:00 AM
这是什么原因呢??
数据库都是同一个数据库,在服务器上,应该和数据库没关系;
另外本机的[控制面板]-[区域和语言选项] 里面的日期时间格式和服务器的也是一样的;
本机是Vista,服务器是Win2003
请问高手,部署后为何显示不一样?要如何改?
...全文
465 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jagx526 2011-01-08
  • 打赏
  • 举报
回复
IIS中选中部署的网站选择属性,然后点击asp.net选项卡,点击编辑配置,在应用程序选项卡中编辑全球化设置,在区域性中选择zh-CN,就可以了。
ciweizzw 2010-08-18
  • 打赏
  • 举报
回复
不知道楼主解决了问题没有,我现在用的win7的机子碰到了同样的问题,我认为是系统的原因
ToShortDateString 返回的格式应该是“区域和语言选项”里的格式,win2003就没问题,win7就是不行
ZKM_ZHANG 2008-10-15
  • 打赏
  • 举报
回复
本机和服务器的时间格式没为yyyy-mm-dd.一定可以的。
jackyoung02 2008-10-15
  • 打赏
  • 举报
回复
Web.Config中,添加:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" />
  • 打赏
  • 举报
回复
解决了啊。
城市猎人0611 2008-10-15
  • 打赏
  • 举报
回复
看来是Windows2003的问题,但按以下方法改了一下,没有 yyyy-MM-dd 格式的
参考:http://www.jcwcn.com/html/windows2003/09_52_14_830.htm
kingcsx666 2008-10-14
  • 打赏
  • 举报
回复
datetime()取的是服务器时间
namhyuk 2008-10-14
  • 打赏
  • 举报
回复
解决了就分享一下。

搞不懂,帮顶。
veiny 2008-10-14
  • 打赏
  • 举报
回复
不要修改机器设置,影响可移植性。
利用.net提供的格式化功能。转换日期
例如3,4,7,13楼的解决方案。
jiangnan_010203 2008-10-14
  • 打赏
  • 举报
回复
用ToString("yyyy-MM-dd")定义一下日期格式
POPO_POPO 2008-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Lion303 的回复:]
应该是哪里设置问题,本机的[控制面板]-[区域和语言选项] 里面的日期时间格式和服务器的也是一样的!
我不想改程序,太多了,麻烦!!
[/Quote]
你是不是没有将时间显示的TotSring??
可以这样来测试一下:
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
城市猎人0611 2008-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Lion303 的回复:]
修改程序是可以,但问题是太麻烦!因为程序在本机测试一切OK!我现在想只修改服务器的设置,
使所有控件默认显示日期时间格式为: 2008-09-01 17:33:29
可[控制面板]-[区域和语言选项] 里面的设置也是一样的!是什么原因呢?
[/Quote]
8、9、10楼的,请你们看清楚问题!我已经看了N遍了,[区域和语言选项]设置是一样的!!!
难道是系统原因吗?本机是Vista,服务器是Win2003,.net框架都是2.0的
j147933783 2008-10-14
  • 打赏
  • 举报
回复
呵呵,你连程序都做的出来还不知道在那里改电脑的时间和日期吗?
有点搞笑哦
JeffChung 2008-10-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 much0726 的回复:]
控制面板-〉区域选项-〉自定义(时间右边的按钮)
在自定义区域选项中看看,时间和日期的格式,和你本机的一不一样.修改下就好了。
[/Quote]

much0726 2008-10-14
  • 打赏
  • 举报
回复
控制面板-〉区域选项-〉自定义(时间右边的按钮)
在自定义区域选项中看看,时间和日期的格式,和你本机的一不一样.修改下就好了。
城市猎人0611 2008-10-14
  • 打赏
  • 举报
回复
修改程序是可以,但问题是太麻烦!因为程序在本机测试一切OK!我现在想只修改服务器的设置,
使所有控件默认显示日期时间格式为: 2008-09-01 17:33:29
可[控制面板]-[区域和语言选项] 里面的设置也是一样的!是什么原因呢?
wuyq11 2008-10-14
  • 打赏
  • 举报
回复
修改程序显示日期格式
城市猎人0611 2008-10-14
  • 打赏
  • 举报
回复
应该是哪里设置问题,本机的[控制面板]-[区域和语言选项] 里面的日期时间格式和服务器的也是一样的!
我不想改程序,太多了,麻烦!!
5Br 2008-10-14
  • 打赏
  • 举报
回复
固定为想要的格式不就行了

1)日期格式化显示
在SQL中DateTime为8位长度日期的指定形式为2003-12-31 00:00:00
而在ASP.NET上最常用的只是2003-12-31号一部分而已你可以使用
DateTime.Now.ToString("d")或DateTime.Now.ToShortDateString();
不过具体格式是2003/12/31还是2003-12-31的话要看你的系统配置日期配置是哪一种.
你要想确定取得2003-12-31指定的话使用.Tostring()用户自定义格式
格式的字符可以看上面说到的文档.
如.ToString("yyyy-MM-dd")返回2003-11-25
.ToString("yyyyMMdd")返回20031125

d 将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用

%d。
dd 将日显示为带前导零的数字(如 01)。
ddd 将日显示为缩写形式(例如 Sun)。
dddd 将日显示为全名(例如 Sunday)。
M 将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一

字符,请使用 %M。
MM 将月份显示为带前导零的数字(例如 01/12/01)。
MMM 将月份显示为缩写形式(例如 Jan)。
MMMM 将月份显示为完整月份名(例如 January)。
gg 显示时代/纪元字符串(例如 A.D.)
h 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数

字格式中的唯一字符,请使用 %h。
hh 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
H 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字

格式中的唯一字符,请使用 %H。
HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。
m 将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字

符,请使用 %m。
mm 将分钟显示为带前导零的数字(例如 12:01:15)。
s 将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符

,请使用 %s。
ss 将秒显示为带前导零的数字(例如 12:15:05)。
F 显示秒的小数部分。例如,ff 将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。

用户定义格式中最多可使用七个 f 符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。
T 使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M 之间的任一小

时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
tt 使用 12 小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M 之间的任一小

时显示大写的 PM。
y 将年份 (0-9) 显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用

%y。
yy 以带前导零的两位数字格式显示年份(如果适用)。
yyy 以四位数字格式显示年份。
yyyy 以四位数字格式显示年份。
z 显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用

%z。
zz 显示带前导零的时区偏移量(例如 -08)
zzz 显示完整的时区偏移量(例如 -08:00)

同样对时间也可以进行这样的格式化..你可以使用自定义格式来设置你想要的格式输出.
你可以使用上表中各字符进行任意的组合不管前后次序多少如你写入yyyy-yyyy也是可以的.

注意的是:进行格式化的一定要是日期DateTime格式.在SQL中的类型也一样.否则格式无效或出错.特别是在DataGrid常{0:IFromat}的格式中会用到

2)日期的输入
我们在办理入日期格式式常用DateTime.Pares()
但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231大家都明白是2003-

12-31号可以C#不认识他.我们可以这样子进行如下
//设置语言国家
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
//指定转换格式
Response.Write(DateTime.ParseExact(this.TextBox1.Text,"yyyyMMdd",format));
这样他就能看出20031231号的日期格式了

不过可惜他只能够对yyyyMMdd形式进行不能对其它格式进行转换是不是美中不足?
不过.NET提供了另一种重载版本.
public static DateTime ParseExact(string, string[], IFormatProvider, DateTimeStyles);
可对指定的几种日期格式进行转换.
Atai-Lu 2008-10-14
  • 打赏
  • 举报
回复
Convert.ToDateTime(datetimestr).ToString("yyyy-MM-dd")
加载更多回复(2)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧