Response.Write(DateTime.Now);
同样是这条代码,在不同的机器上运行有的输出的是 2001-5-26 11:36:44 上午
                                  有的输出的是 2001-5-26 11:36:44
看起来好像没什么区别,也都能够转换成时间型,可是当你结合sql语句运行时就有可能会出错,比如 select * from table where time >='2001-5-26 11:36:44 上午' and C_CALLTIME<='2001-5-27 11:36:44 上午' 这条sql语句就会报错:“从字符串转换为 datetime 时发生语法错误”。因为这里的时间是通过DateTime.Now产生并传入的,所以你并不容易发现错误的所在。(开始我做的系统运行的好好的,后面因为我重装了一下XP操作系统,运行就出错了,而在服务器上又是好的,找了好久才发现是上面说的原因。)大家应该注意我现在想问的是如何设置XP才能让Response.Write(DateTime.Now);输出的是“2001-5-26 11:36:44”而不是“2001-5-26 11:36:44 上午” 或者这是XP版本的问题?不知我说的是否清楚,请遇到这种情况的同仁来讨论下

解决方案 »

  1.   

    这是一个windows系统编程常识。DataTime.ToString()取桌面操作系统设置。如果你要固定输出形式,就应该自己给出Format参数,不能空着。
      

  2.   

    可是Format参数出来的就是字符串了,操作系统是否可以设置?
      

  3.   

    系统设置不可能一致的,格式化输出DataTime.ToString("yyyy-MM-dd")这样就可以了,不会影响SQL查询
      

  4.   

    在你新装的XP系统中打开控制面板->时区和语言选项,修改不同的时区,设定不同的语言,然后分别用Response.Write系统当前日期时间来看看。如果有条件的话,分别找到中文版XP和英文版XP及2003 Server试试,看有什么不同。然后在中文版和英文版中SQL Server中新建一个表,增加一个日期(Date)类型的字段,再增加一个时间(Time)类型的字段,再增加一个日期时间(DateTime)类型的字段,把当前的系统时间存入,然后打开表,看看不同。你可以看一下,SQL中存放的日期时间在什么条件下会出现“上午、下午、AM、PM”,然后你应该就知道为什么你上面提到的sql语句在迁移了系统后会出错了。如何解决,大家已经告诉你了:)
      

  5.   

    请查看SDK文档,说得很清楚,DateTime.ToString()的值使用从当前区域性导出的格式信息。
      

  6.   

    建议LZ索性一起了解一下日期的原理及表现形式,掌握相关的概念。
    如:时区,UTC,长时间格式,短时间格式等等
      

  7.   

    LZ还没理解?系统的时间显示格式是可以定制的!!!!
    每个用户,都可以按自己的阅读习惯,设置相应的显示格式,具体是在控制面板中,楼上的zhrchrd(洗澡)已经说明了。
    如此一来,你不管是开access还好,还是OE也好,里面的显示格式会跟着变,就好比,你改了Windows外观,窗口标题栏,由默认的蓝色变成了绿色,那所有的窗口也跟着变,是一个道理。同样,编程语言/类库为了支持这一点,会去系统中取得当前用户指定的显示格式,并按此格式返回时间字符串,做到表现形式一致。若你要取得固定的格式,只有自己指定显示格式,这LS已经有答案了。
      

  8.   

    XP系统中打开控制面板->时区和语言选项,修改不同的时区,设定不同的语言
    选择了不同时区只是改变时间而已吧?显示的时间格式并没有改变