解决方案 »

  1.   

    和操作系统的区域设置有关。
    你要保持所有环境都一样就不能用不带参数的ToString,而要制定格式,比如 yyyy-MM-dd HH:mm:ss
      

  2.   

    可以定制 读取的时间格式 : 下面的示例使用表示五种不同区域性的 CultureInfo 对象来显示日期和时间的字符串表示形式。 Visual Basic  复制代码 
    Imports System.GlobalizationModule Example
       Public Sub Main()
          Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture, _
                                           New CultureInfo("en-us"), _
                                           New CultureInfo("fr-fr"), _
                                           New CultureInfo("de-DE"), _
                                           New CultureInfo("es-ES"), _
                                           New CultureInfo("ja-JP")}      Dim thisDate As Date =#5/1/2009 9:00AM#                                                  For Each culture As CultureInfo In cultures
             Dim cultureName As String 
             If String.IsNullOrEmpty(culture.Name) Then
                cultureName = culture.NativeName
             Else
                cultureName = culture.Name
             End If         Console.WriteLine("In {0}, {1}", _
                               cultureName, thisDate.ToString(culture))
          Next                                            
       End Sub
    End Module
    ' The example produces the following output:
    '    In Invariant Language (Invariant Country), 05/01/2009 09:00:00
    '    In en-US, 5/1/2009 9:00:00 AM
    '    In fr-FR, 01/05/2009 09:00:00
    '    In de-DE, 01.05.2009 09:00:00
    '    In es-ES, 01/05/2009 9:00:00
    '    In ja-JP, 2009/05/01 9:00:00
     
    C#  复制代码 
    using System;
    using System.Globalization;public class Example
    {
       public static void Main()
       {
          CultureInfo[] cultures = new CultureInfo[] {CultureInfo.InvariantCulture, 
                                                      new CultureInfo("en-us"), 
                                                      new CultureInfo("fr-fr"), 
                                                      new CultureInfo("de-DE"), 
                                                      new CultureInfo("es-ES"),
                                                      new CultureInfo("ja-JP")};      DateTime thisDate = new DateTime(2009, 5, 1, 9, 0, 0);                                                  foreach (CultureInfo culture in cultures)
          {
             string cultureName; 
             if (string.IsNullOrEmpty(culture.Name))
                cultureName = culture.NativeName;
             else
                cultureName = culture.Name;         Console.WriteLine("In {0}, {1}", 
                               cultureName, thisDate.ToString(culture));
          }                                            
          }
    }
    // The example produces the following output:
    //    In Invariant Language (Invariant Country), 05/01/2009 09:00:00
    //    In en-US, 5/1/2009 9:00:00 AM
    //    In fr-FR, 01/05/2009 09:00:00
    //    In de-DE, 01.05.2009 09:00:00
    //    In es-ES, 01/05/2009 9:00:00
    //    In ja-JP, 2009/05/01 9:00:00
     
      

  3.   


    什么叫做“取出来的日期”呢?程序中表达一个日期,就应该使用 DateTime 类型,而不是 String 类型。如果你连类型都搞错了,自然会乱!
      

  4.   

    datetime.now.tostring("yyyy-MM-dd HH:mm:ss")
    自己格式化比较保险,HH是24,hh是12
      

  5.   


    基本上就这样了,Date只是一个日期对象,根据系统内的各种格式化设置转换成不同的字符串表现形式。如果需要撇开这些差异,你自己定好输出格式就行了。
    Date.ToString("yyyy-MM-dd HH:mm:ss")这样输出就好了
      

  6.   

    +1
    日期时间类型,在内存里其实就是一组二进制数,表示的是从1970-1-1 0:0:0到现在的毫秒数
    跟你转字符串变什么格式没有任何关系
    而你转字符串直接用ToString()转,变成什么东西,跟你系统的时间区域设置有关
    想不受系统设置影响,自己格式化,传入"yyyy-MM-dd HH:mm:ss"就是24小时制,传入"yyyy-MM-dd hh:mm:ss"就是12小时制
      

  7.   

    注意查看MSDN文档:
    DateTime 结构
    DateTime.Now 属性
      

  8.   

    还有string类的格式化控制,toString(参数列表);其中参数列表起到的作用。
    DateTime.Now 属性,Now也是一个DateTime对象,取DateTime.Now.Date属性(与DateTime.Date属性一样),就是取到计算机本地时间的年月日,时分秒是一个默认的时间点。
    下面的示例使用 Date 属性提取其时间组成部分设置为零(即 0:00:00 或午夜)的 DateTime 值的日期组成部分。 它还演示根据显示 DateTime 值时所使用的格式字符串的不同,时间组成部分可以继续显示在格式化输出中。