代码之家  ›  专栏  ›  技术社区  ›  Tim Schmelter

日期时间格式问题

  •  1
  • Tim Schmelter  · 技术社区  · 16 年前

    我没有从datetime对象得到以下所需的输出:

    2010年3月29日13:15:00

    我的默认本地化是de de,所以一个简单的toString给了我:

    2010年3月29日13:15:00

    我试图从美国文化中创建一个datetimeformatinfo对象,并使用其datetimepatterns,但没有成功:

    Dim usDateFormat As Globalization.DateTimeFormatInfo = New Globalization.CultureInfo("en-US", False).DateTimeFormat
    usDateFormat.DateSeparator = "-"
    ruleResult.Claim.Last_Updated_Date.ToString(usDateFormat.ShortDatePattern)
    

    输出: 3.27.2010

    获取所需日期时间格式的最佳方法(可读、最快)是什么(我有时需要短日期,有时需要上面示例中的日期和时间)?

    感谢您的期待, 提姆

    编辑 :当使用string.format或tostring(“yyyy-mm-dd hh:mm:ss”)解决方案而不是专用共享(静态)datetimeformatinfo对象时,为什么我的datetimeformatinfo方法不起作用并使其性能有所不同?我至少要调用这个函数30k次,里面有很多要格式化的日期。

    7 回复  |  直到 16 年前
        1
  •  11
  •   Leo    16 年前

    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    

    // create date time 2008-03-09 16:05:07.123
    DateTime dateTime = new DateTime(2008, 3, 9, 16, 5, 7, 123);
    
    dateTime.ToString("y yy yyy yyyy");  // "8 08 008 2008"   year
    dateTime.ToString("M MM MMM MMMM");  // "3 03 Mar March"  month
    dateTime.ToString("d dd ddd dddd");  // "9 09 Sun Sunday" day
    dateTime.ToString("h hh H HH"    );  // "4 04 16 16"      hour 12/24
    dateTime.ToString("m mm"         );  // "5 05"            minute
    dateTime.ToString("s ss"         );  // "7 07"            second
    dateTime.ToString("f ff fff ffff");  // "1 12 123 1230"   sec.fraction
    dateTime.ToString("F FF FFF FFFF");  // "1 12 123 123"    without zeroes
    dateTime.ToString("t tt"         );  // "P PM"            A.M. or P.M.
    dateTime.ToString("z zz zzz"     );  // "-6 -06 -06:00"   time zone
    
        2
  •  4
  •   Andrew Cox    16 年前

    2010-03-29 13:15:00

    DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
    

    this MSDN article

        3
  •  2
  •   Oliver    16 年前

    // Get a default DateTimeFormat
    var dateTimeFormat = CultureInfo.GetCultureInfo("en-US").DateTimeFormat;
    // Clone it to make it writeable
    dateTimeFormat = (DateTimeFormatInfo)dateTimeFormat.Clone();
    // Change the DateSeparator
    dateTimeFormat.DateSeparator = "-";
    // Output it as normal
    var output = DateTime.Now.ToString("g", dateTimeFormat);
    

    Clone()

    // Get a default DateTimeFormat
    var dateTimeFormat = new CultureInfo("en-US").DateTimeFormat;
    // Change the DateSeparator
    dateTimeFormat.DateSeparator = "-";
    // Output it as normal
    var output = DateTime.Now.ToString("g", dateTimeFormat);
    

    CultureInfo

    // Get a default DateTimeFormat
    var dateTimeFormat = new CultureInfo("en-US").DateTimeFormat;
    // Change the DateSeparator
    dateTimeFormat.DateSeparator = "-";
    // Output it as normal
    var output = DateTime.Now.ToString(dateTimeFormat.ShortDatePattern);
    

    dateTimeFormat.ShortDatePattern M/d/yyyy DateTime.Now.ToString("M/d/yyyy")

    / IFormatProvider

    // Get a default DateTimeFormat
    var dateTimeFormat = new CultureInfo("en-US").DateTimeFormat;
    // Change the DateSeparator
    dateTimeFormat.DateSeparator = "-";
    // Output it as normal
    var output = DateTime.Now.ToString(dateTimeFormat.ShortDatePattern, dateTimeFormat);
    

    var output = DateTime.Now.ToString(dateTimeFormat.ShortDatePattern, dateTimeFormat);
    var output = DateTime.Now.ToString("M/d/yyyy", dateTimeFormat);
    

        4
  •  1
  •   Alex Reitbort    16 年前
    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
    
    DateTime.Now.ToString("yyyy-MM-dd")
    
        5
  •  1
  •   Iain Ward    16 年前

    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    

    DateTime.Now.ToString("yyyy-MM-dd");
    
        6
  •  0
  •   Florian    16 年前
    string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)
    

    http://alexonasp.net/samples/stringformatting/

        7
  •  0
  •   Besnik    16 年前

    format(date.now,"yyyy-MM-dd HH:mm:ss)