将DateTime转换为字符串 "yyyy-mm-dd"

3

我想知道如何将DateTime转换为字符串值(yyyy-mm-dd)。我有一个控制台应用程序,我希望用户能够将日期写成“yyyy-mm-dd”,然后将其转换为字符串。

我尝试过这个方法,但似乎效果相反。这个想法是让用户通过Console.ReadLine输入一个开始日期和一个结束日期。然后将这些值存储为字符串A和B,稍后可以使用它们。这可能吗?

string A = string.Empty;
string B = string.Empty;
DateTime Start = DateTime.ParseExact(A, "yyyy-mm-dd",CultureInfo.InvariantCulture);
Console.WriteLine("Enter StartDate! (yyyy-mm-dd)");
Start = Console.ReadLine();      
DateTime End = DateTime.ParseExact(A, "yyyy-mm-dd",CultureInfo.InvariantCulture);
Console.WriteLine("Enter EndDate! (yyyy-mm-dd)");
End = Console.ReadLine();

谢谢您


4
使用DateTime.Now.ToString("yyyy-MM-dd");将日期时间转换为字符串。 - undefined
4个回答

19

你走在正确的路上,但还有一点偏差。例如,在读取时尝试像这样做:

var s = Console.ReadLine();
var date = DateTime.ParseExact(s,"yyyy-MM-dd",CultureInfo.InvariantCulture);

你可能也想使用DateTime.TryParseExact(),这样更加安全,而且可以处理用户输入垃圾数据时的情况。目前的代码可能会抛出一个异常。

如果要按照特定格式输出日期时间,可以使用相同的格式调用 DateTime.ToString() 方法,例如:

var date_string = date.ToString("yyyy-MM-dd");

谢谢!那非常有帮助,运行得很好。我之前尝试过类似的方法,但是使用字符串而不是DateTime作为输入: Console.WriteLine("请输入开始日期!(yyyy-mm-dd)"); string A = Console.ReadLine(); Console.WriteLine("请输入结束日期!(yyyy-mm-dd)"); string B = Console.ReadLine(); - undefined

2
不太清楚你想要将 DateTime 转换成 String 还是反过来。如果是从 DateTime 转换成 String:只需对源进行格式化即可。
 DateTime source = ...;
 String result = source.ToString("yyyy-MM-dd");

从String类型转换为DateTime类型:使用parse方法可以准确解析源字符串:

 String source = ...;
 DateTime result = DateTime.ParseExact(source, "yyyy-MM-dd", CultureInfo.InvariantCulture);

或者使用TryParseExact(如果您想要检查用户的输入)

 String source = ...;
 DateTime result;

 if (DateTime.TryParseExact(source, "yyyy-MM-dd", 
                            CultureInfo.InvariantCulture, 
                            out result) {
   // parsed
 }
 else {
   // not parsed (incorrect format)
 }

1
mm 应该大写为 MM - undefined

0

虽然您可以使用ToString()格式化DateTime值,但无法直接格式化可空的DateTime(DateTime?)。首先,您需要将其转换。((DateTime)someDate).ToString()。但是,如果变量为空,您需要处理此情况,否则会引发异常。 DateTime?dateTime = null;

if (dateTime != null)
{
    Debug.WriteLine(((DateTime)dateTime).ToString("yyyy-MM-dd"));
}
else
{
    // Handle null date value
    dateTime = DateTime.Now;
    Debug.WriteLine(((DateTime)dateTime).ToString("yyyy-MM-dd"));
}

0
要将DateTime转换为所需的字符串值(yyyy-mm-dd)格式,我们可以这样做:
DateTime testDate = DateTime.Now; //Here is your date field value.
string strdate = testDate.ToString("yyyy, MMMM dd");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接