关于不同制式时间格式问题//欧洲,中国,美国

yuuzg 2004-11-16 11:07:40
System.DateTime.Now得到系统当前时间,格式如下:(时间只是举例)
中国 2004/11/16 22:51:12
美国 11/16/2004 22:51:12
欧洲 16/11/2004 22:51:12

把这个时间插入到数据库中时间字段时遇到如下麻烦问题:
可以接收中国和美国时间(sqlServer支持这个两个时间格式),但是不接收欧洲这个时间格式,会把16当作月份处理,所以程序会抛出月份超出范围的错误。
用DateTime.ToShortDate()得到的也是16/11/2004
请教:如何能让数据库接受这个欧洲制式的时间格式,或者有什么更妙的解决方法,在此小弟先谢了。

我最笨的方法就是用
datetime.year.tostring()+"-" + datetime.month.tostring() + "-" +datetime.day.tostring()
组成字符串再转成中国制式的时间格式。
注:程序是在国内开发,在欧洲使用。没有这方面的经验,请教各位大虾。
...全文
2631 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuuzg 2004-11-18
  • 打赏
  • 举报
回复
我顶,帮我~~
yuuzg 2004-11-17
  • 打赏
  • 举报
回复
最好是全局设定的。

还有,程序可能涉及到欧洲几个国家,如果单设定一个时区的话,就怕还会出问题,如果出好几个版本的话就怕以后版本不好控制。
jimmyzhang 2004-11-17
  • 打赏
  • 举报
回复
有三個方面做:
一:能在數據庫處理的就在數據庫處理
形如:設定sql的 defaultvalue為(convert(varchar(10),getdate(),111))就可,
二:如果一定要在程序中設定時間后再insert到database里面的話就用
DateTime.Now.ToString("yyyy/MM/dd")就可以得到相應的日期.
三:如果要先就設定好環境的話,
就在webconfig里面設定好.也可以Global.asax.cs里面設定好!
yuuzg 2004-11-17
  • 打赏
  • 举报
回复
zhuyupu2004(笑话)
ljfdd(夜风之舞)
请问这些设置放在什么文件里,因为几乎所有窗口都涉及到这个问题,所以不可能在每个窗口都这么设一边,请指教,谢谢。
yuuzg 2004-11-17
  • 打赏
  • 举报
回复
请问这些设置放在什么文件里,因为几乎所有窗口都涉及到这个问题,所以不可能在每个窗口都这么设一边,请指教,谢谢。
yuuzg 2004-11-17
  • 打赏
  • 举报
回复
好的,我试试各位大虾的方法,成功了就给分。
jimh 2004-11-17
  • 打赏
  • 举报
回复
如果使用参数的形式传到数据库,例如是存储过程,那没有任何问题,不需要转换,如果自己创建动态sql语句,使用datetime.tostring("yyyy-MM-dd")
xiaoslong 2004-11-17
  • 打赏
  • 举报
回复
帮你顶!
ljfdd 2004-11-17
  • 打赏
  • 举报
回复

DateTime dt = DateTime.Now;
DateTimeFormatInfo dfi = new DateTimeFormatInfo();
CultureInfo ci = new CultureInfo("nl-BE");

// Use the DateTimeFormat from the culture associated with
// the current thread.
Console.WriteLine(dt.ToString("d"));
Console.WriteLine(dt.ToString("m"));

// Use the DateTimeFormat from the specific culture passed.
Console.WriteLine(dt.ToString("F", ci));

// Make up a new custom DateTime pattern, and use it
dfi.MonthDayPattern = "MM-MMMM, ddd-dddd";
Console.WriteLine(dt.ToString("m", dfi));

// Reset the current thread to a different culture.
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-BE");
Console.WriteLine(dt.ToString("d"));
tongcheng 2004-11-17
  • 打赏
  • 举报
回复
数据库认那种格式吗?

按字符串处理吧
xjking0331 2004-11-17
  • 打赏
  • 举报
回复
区域化跟 国际化的问题,可以在global里设置,如zhuyupu2004(笑话) 所述
icesnows 2004-11-17
  • 打赏
  • 举报
回复
同意楼上的观点,设定特定的语言环境
zhuyupu2004 2004-11-17
  • 打赏
  • 举报
回复
在欧洲使用就应该用欧洲的书写格式,如果没有欧洲使用的开发环境,
那你可以根据区域名称指定的初始化 System.Globalization.CultureInfo("en-US");
恩en-US是美国,英国是en-GB,详细信息看CultureInfo类
例如:
System.Globalization.CultureInfo info =
new System.Globalization.CultureInfo("en-US");

System.Globalization.Calendar calendar = info.Calendar;

System.DateTime dateTime =
new System.DateTime(1979,07,28,calendar );


一半乐事 2004-11-17
  • 打赏
  • 举报
回复
欧洲 16/11/2004 22:51:12 ,没用过这种格式,用datetime.ToString("G")转化一下试一试,然后再写入数据库。
linzsoft 2004-11-17
  • 打赏
  • 举报
回复
这个你可以采用这种方法在数据库中将时间作为字符窜处理,需要的时候再用 DataTime 格式化。
yuuzg 2004-11-17
  • 打赏
  • 举报
回复
嗯,日期我决定用toString(""yyyy-MM-dd")这类的自定义格式了.
但是刚才又遇到一麻烦,我把计算机控制面板的区域选项设置到 意大利语(意大利),它的时间格式是 H.mm.ss
我用tostring("HH:mm:ss")想转成这样的,但是始终都转不过来,显示的还是17.39.21 结果sqlserver数据库还是不认这个时间格式。
有兴趣的可以试试是不是这样,也帮小弟一把。
怎么解决这个问题。

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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