.Net:DateRange无法转换为'Date

时间:2009-06-01 21:34:08

标签: .net

link text

我遇到了同样的问题。我的日期格式是MM / dd / yyyy。如何在我的系统中找到日期格式并使用代码进行更改。

3 个答案:

答案 0 :(得分:0)

如果它是一个日期对象,那么你只需要使用ToString方法对其进行格式化。

http://msdn.microsoft.com/en-us/library/system.datetime.tostring.aspx

代码示例:

using System;

public class DateToStringExample
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2008, 6, 15, 21, 15, 07);
      // Create an array of standard format strings.
      string[] standardFmts = {"d", "D", "f", "F", "g", "G", "m", "o", 
                               "R", "s", "t", "T", "u", "U", "y"};
      // Output date and time using each standard format string.
      foreach (string standardFmt in standardFmts)
         Console.WriteLine("{0}: {1}", standardFmt, 
                           dateValue.ToString(standardFmt));
      Console.WriteLine();

      // Create an array of some custom format strings.
      string[] customFmts = {"h:mm:ss.ff t", "d MMM yyyy", "HH:mm:ss.f", 
                             "dd MMM HH:mm:ss", @"\Mon\t\h\: M", "HH:mm:ss.ffffzzz" };
      // Output date and time using each custom format string.
      foreach (string customFmt in customFmts)
         Console.WriteLine("'{0}': {1}", customFmt,
                           dateValue.ToString(customFmt));
   }
}
// This example displays the following output to the console:
//       d: 6/15/2008
//       D: Sunday, June 15, 2008
//       f: Sunday, June 15, 2008 9:15 PM
//       F: Sunday, June 15, 2008 9:15:07 PM
//       g: 6/15/2008 9:15 PM
//       G: 6/15/2008 9:15:07 PM
//       m: June 15
//       o: 2008-06-15T21:15:07.0000000
//       R: Sun, 15 Jun 2008 21:15:07 GMT
//       s: 2008-06-15T21:15:07
//       t: 9:15 PM
//       T: 9:15:07 PM
//       u: 2008-06-15 21:15:07Z
//       U: Monday, June 16, 2008 4:15:07 AM
//       y: June, 2008
//       
//       'h:mm:ss.ff t': 9:15:07.00 P
//       'd MMM yyyy': 15 Jun 2008
//       'HH:mm:ss.f': 21:15:07.0
//       'dd MMM HH:mm:ss': 15 Jun 21:15:07
//       '\Mon\t\h\: M': Month: 6
//       'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00

答案 1 :(得分:0)

你的问题是你在aspx文件中分配日期并期望格式为mm / dd / yyyy,这可能是dd / mm / yyyy所以它正在爆炸。您是否部署到使用不同日期格式的系统?

如果是这样,可以手动通过代码添加范围,并使用期望日期对象的预期格式进行分配。

例如

YourDateValidator.MaximumValue = YourMaxDateTimeObject;
YourDateValidator.MinimumValue = YourMinDateTimeObject; 

答案 2 :(得分:0)

您应该为current thread设置适当的文化。 DateTime.Parse使用当前线程文化中的日期设置(顺便说一句,I love you, Reflector!):

public static DateTime Parse(string s)
{
    return DateTimeParse.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None);
}   

其中“DateTimeFormatInfo.CurrentInfo”是:

public static DateTimeFormatInfo CurrentInfo
{
    get
    {
        CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
        if (!currentCulture.m_isInherited)
        {
            DateTimeFormatInfo dateTimeInfo = currentCulture.dateTimeInfo;
            if (dateTimeInfo != null)
            {
                return dateTimeInfo;
            }
        }
        return (DateTimeFormatInfo) currentCulture.GetFormat(typeof(DateTimeFormatInfo));
    }
}

有很多关于全球化的方法,只是尝试搜索它们(example of such how-to :))