Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将日期从2020年5月6日格式转换为dd/MM/YYYY格式_C#_Asp.net_Datetime_Datetime Format - Fatal编程技术网

C# 将日期从2020年5月6日格式转换为dd/MM/YYYY格式

C# 将日期从2020年5月6日格式转换为dd/MM/YYYY格式,c#,asp.net,datetime,datetime-format,C#,Asp.net,Datetime,Datetime Format,我面临着一个小问题,在尝试了这么多事情之后,我无法解决这个问题,所以我就这样做了。。。。。在我的页面中有一个文本框,我在其中输入日期,并希望该日期出现在datetime对象中 例如: 日期entd:6 05 2020(dd/MM/yyyyy)在日期时间对象中访问时应采用相同的格式,但它将更改为(6.05.2020ie:MM/dd/yyyy格式) 我希望我在这里讲得有道理,我想要的是这样的东西 DateTime dt = convert.ToDateTime(txtDate.Text); dt应

我面临着一个小问题,在尝试了这么多事情之后,我无法解决这个问题,所以我就这样做了。。。。。在我的页面中有一个文本框,我在其中输入日期,并希望该日期出现在datetime对象中

例如: 日期entd:6 05 2020(dd/MM/yyyyy)在日期时间对象中访问时应采用相同的格式,但它将更改为(6.05.2020ie:MM/dd/yyyy格式)

我希望我在这里讲得有道理,我想要的是这样的东西

DateTime dt = convert.ToDateTime(txtDate.Text);
dt应为(2010年11月2日,而不是2010年2月11日)

@在使用下面的代码之后,oded

DateTime sDate, eDate = new DateTime(); 
//修改日期以供我们使用。 DateTime.TryParseExact(txtFrom.Text,“dd/MM/yyyy”,CultureInfo.InvariantCulture,datetimestyle.None,out-sDate)


我在edate和sdate中得到的是6 05 2020 12:00:00 am,它应该是6 05/2020

DateTime
不以任何特定格式存储日期-它使用内部表示(确切地说什么应该不重要)

将字符串解析为
DateTime
后,没有固有的格式。输出值时只有一种格式。您在调试器中看到的只是使用系统设置转换为字符串

如果要格式化
DateTime
,请将
ToString
与格式字符串一起使用:

dt.ToString("dd/MM/yyyy");
反之亦然-如果需要明确解析字符串,请使用
ParseExact
TryParseExact
(都是
DateTime
的静态成员):

阅读日期和时间格式字符串。

编辑:此值:“11/2/2010”与格式“dd/MM/yyyy”不匹配。它与格式“d/M/yyyy”相匹配,“dd/MM/yyyy”的格式应为“11/02/2010”

这就是为什么
TryParseExact
对您来说是失败的。您需要选择正确的格式模式


DateTime
值没有格式。它只表示日期和时间(在ISO日历中,可能在不同的时区,但这是另一回事)。它就像一个
int
——它不代表“十进制整数”或“十六进制整数”——它只是一个特定范围内的整数。您可以将数字格式化为十进制或十六进制,但它本身没有格式

听起来您应该使用
ParseExact
对其进行解析,以指定从文本框转换时的格式,或者:

您应该将该值保留为
DateTime
,用于所有目的,但将其返回给用户除外,此时您可能需要使用他们的文化设置


特别是,如果要将值存储在数据库中,则不应将其转换为文本并将其包含在SQL语句中,这会带来麻烦。相反,请使用参数化SQL语句并将其设置为参数值,仍然是
DateTime

尝试使用适当的格式提供程序进行DateTime.Parse。你的情况应该是这样的

IFormatProvider culture = new CultureInfo("de-DE", true);
DateTime.Parse(txtDate.Text, culture );

为了避免在解析日期时月/日出现任何错误,最好使用
ToDateTime


正如和所指出的。

如果您想在给定特定格式的情况下访问它,应该使用DateTime.ToString(字符串格式)


我不知道你的意思。DateTime对象不应具有“格式”,除非它具有ToString()的实现。您应该能够以任何喜欢的方式显示它。为什么不使用CalenderExtender,其格式如下
CalenderExtender 1.format=“dd.MM.yyy”来自AjaxControlToolkit?我认为键入日期是不安全的,用户可能会输入任何不知道您的日期文本框如何工作的内容。如果您得到1/1/0001/,则表示正在解析的文本无效。我会简单地使用一个日历延伸器,因为你想要做的,需要做很多工作才能使它有价值。它再次是字符串,因为你已经使用了字符串,我不需要我需要dattime对象中的东西。通过从文本框中选取值,然后在日期时间对象中将其格式再次修改为dd/MM/yyyy,您是否可以为其提供一些代码段。@ankur-a
DateTime
没有格式。您只能将其格式化为字符串。@Oded:听起来这里更重要的部分是解析,而不是格式化。“我的页面中有一个文本框,我在其中输入日期,并希望该日期出现在datetime对象中。”-这是一个解析任务。为什么不使用CalenderExtender,其格式如下
CalenderExtender 1.format=“dd.MM.yyy”?@ankur-Oded正确-尽可能在内部保留DateTime值(不要在内部将其作为字符串传递)-这可以避免您在时区、格式等方面遇到很多挫折。在屏幕、报告等上显示DateTime时,您只需担心格式问题。DateTime sDate,eDate=new DateTime()//修改日期以供我们使用。DateTime.TryParseExact(txtFrom.Text,“dd/MM/yyyy”,CultureInfo.InvariantCulture,datetimestyle.None,out-sDate);DateTime.TryParseExact(txtFrom.Text,“dd/MM/yyyy”,CultureInfo.InvariantCulture,datetimestyle.None,out-eDate);我在edate和sdate中得到的是2011年3月11日凌晨1/1/0001 12:00:00,我想你明白了我的观点输出不正确,这只是我关心的问题。@ankur:你忽略了
TryParseExact
的返回值,这几乎肯定是错误的。这里的
txtFrom.Text
值是多少?你说“这只是我关心的问题”——但我觉得你根本没有抓住日期时间没有格式这一点。在调试器中,您可能会看到一个格式化的表示形式,但这与DateTime本身中的值不同。@ankur:如果您试图解析“11/2/2010”,就好像月份是以“MM”格式指定的一样(即正好两位数字),请查看顶部“我的答案”的更新那么解析确实会失败。谢谢你的指点,但问题仍然存在。我将解释并粘贴代码
DateTime dt;

if(DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture,
                           DateTimeStyles.None, out td))
{
  // Valid date used in `txtDate.Text`, use dt now.
}
// This is assuming you're absolutely sure of the format used. This is *not*
// necessarily the user's preferred format. You should think about where your
// data is coming from.
DateTime date;
if (DateTime.TryParseExact(text, "dd/MM/yyyy", CultureInfo.InvariantCulture,
                           DateTimeStyles.None, out date))
{
    // Okay, successful parse. We now have the date. Use it, avoiding formatting
    // it back to a string for as long as possible.
}
IFormatProvider culture = new CultureInfo("de-DE", true);
DateTime.Parse(txtDate.Text, culture );