C# 如何将DateTime变量转换为';年月日';格式

C# 如何将DateTime变量转换为';年月日';格式,c#,date,datetime,C#,Date,Datetime,如何将上述OrderDate变量的值指定为05/20/15 我尝试使用Convert.ToDateTime,但它似乎适用于yyyy格式,但不适用于yy。您需要创建一个新的日期时间对象并将其分配给属性 private DateTime OrderDate; OrderDate = Convert.ToDateTime("05/20/15") 要分配它,可以使用OrderDate=newdatetime(2015,5,20) 显示值时,.Net Framework将使用本地区域性或您的计算机 如果

如何将上述OrderDate变量的值指定为05/20/15


我尝试使用Convert.ToDateTime,但它似乎适用于yyyy格式,但不适用于yy。

您需要创建一个新的日期时间对象并将其分配给属性

private DateTime OrderDate;
OrderDate = Convert.ToDateTime("05/20/15")

要分配它,可以使用
OrderDate=newdatetime(2015,5,20)

显示值时,.Net Framework将使用本地区域性或您的计算机


如果要使用不同的显示格式(不更改区域性),可以使用
String.format(“{0:MM/dd/yy}”,OrderDate)

有关转换/格式化日期的大量信息,您可以在此处找到:

我想你尤其需要这个例子:

MSDN代码段:

OrderDate = new DateTime(2015, 5, 20);

除非将日期字符串更改为正确的格式,否则无法猜测您正在引用哪个千年。

或者,您可以单独获取日期的每个部分,并将其传递给构造函数:

public class Example
{
   public static void Main()
   {
      string[] dateValues = { "30-12-2011", "12-30-2011", 
                              "30-12-11", "12-30-11" };
      string pattern = "MM-dd-yy";
      DateTime parsedDate;

      foreach (var dateValue in dateValues) {
         if (DateTime.TryParseExact(dateValue, pattern, null, 
                                   DateTimeStyles.None, out parsedDate))
            Console.WriteLine("Converted '{0}' to {1:d}.", 
                              dateValue, parsedDate);
         else
            Console.WriteLine("Unable to convert '{0}' to a date and time.", 
                              dateValue);
      }
   }
}
// The example displays the following output: 
//    Unable to convert '30-12-2011' to a date and time. 
//    Unable to convert '12-30-2011' to a date and time. 
//    Unable to convert '30-12-11' to a date and time. 
//    Converted '12-30-11' to 12/30/2011.

您可以使用DateTime.ParseExact来实现这一点

OrderDate = new DateTime(2015, 5, 20);
我将使用:


您所显示的只是一个字段。这只是一个日期和时间-它没有格式。我们不知道如何将其转换为字符串或从字符串转换为字符串…每个
DateTime
对象都有不同的属性,就像
Year
Month
Day
。。。你可以很容易地用你想要的有效整数值来初始化它们…@Jon Skeet-我现在修改了我的问题。我想他说的是他的格式中的2位数年份。e、 g.15而不是2015年,他询问如何为他的日期时间属性分配此值。他需要根据你的建议改变他的问题。谢谢。我需要mm/dd/yy格式的订单日期。所以,变量应该返回我一个日期05/20/15。@Rob:变量只是一个
DateTime
。它没有格式。您可以使用
ToString
对其进行格式化,并提供所需的任何格式。理解
DateTime
存储的内容与如何在字符串中表示它们之间的区别非常重要……谢谢。我需要mm/dd/yy格式的订单日期。所以,这个DateTime变量(不是字符串)应该返回我一个05/20/15的日期。。。DateTime值应解码为符合特定指定格式的可打印字符串。您可以通过请求要解码的值并提供要使用的格式字符串来实现这一点。请记住,DateTime的“value of”在内部来说“只是一个浮点数”,但它的值是不透明的。你不在乎它到底是什么。您可以对字符串(或数字向量)进行编码以生成该变量,然后对其进行操作(使用提供的方法!),最后对其进行解码以进行打印。@Rob,我非常确定(此处有待更正)您在检查变量时看到的日期格式是由您机器的区域性驱动的。
DateTime
的内部实现与文化无关-它以自己的方式存储日期、格式/文化等。只有当您希望显示日期时才有意义(正如许多海报已经指出的那样),默认格式依赖于机器文化,但(同样,正如许多人所指出的)有一些技术和课程可以让你控制这一点。我想Jon Skeet可能不同意这是你需要知道的一切:)但这应该足以解决最初的问题。是的,你是对的。我会把我的文字更新为“关于……的很多信息”。。为防止进一步讨论此类文本详细信息:)
DateTime OrderDate = DateTime.ParseExact("05/20/15", "MM/dd/yy", CultureInfo.InvariantCulture);
DateTime time;
if (DateTime.TryParseExact("05/20/15", "MM/dd/yy", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out time))
{
   do something ...
}