Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# 如何在asp.net中更改日期字符串的格式_C#_Asp.net_Date_Datetime_Tostring - Fatal编程技术网

C# 如何在asp.net中更改日期字符串的格式

C# 如何在asp.net中更改日期字符串的格式,c#,asp.net,date,datetime,tostring,C#,Asp.net,Date,Datetime,Tostring,我有一个日期字符串,如“30/01/2018” 我想要像“2018/01/30”这样的格式 我试过以下几句话 DateTime.Parse(startDate.Text.ToString()).ToString("yyyy/MM/dd"); 及 DateTime.ParseExact(startDate.Text.ToString(),“dd/MM/yyyy”).ToString(“yyy/MM/dd”) 但是没有起作用。 还有其他解决方案吗?如果您希望以字符串形式输出。为什么不分开重新安排呢

我有一个日期字符串,如“30/01/2018” 我想要像“2018/01/30”这样的格式

我试过以下几句话

DateTime.Parse(startDate.Text.ToString()).ToString("yyyy/MM/dd");

DateTime.ParseExact(startDate.Text.ToString(),“dd/MM/yyyy”).ToString(“yyy/MM/dd”)

但是没有起作用。
还有其他解决方案吗?

如果您希望以字符串形式输出。为什么不分开重新安排呢

string strOldFormat = "30/01/2018";
string[] strArrOldFormat = strOldFormat.Split('/');
string strNewFormat = strArrOldFormat[2] + "/" + strArrOldFormat[1] + "/" + strArrOldFormat[0];
转义斜杠(并使用具有
ParseExact
的区域性)

或者对
ToString
使用
InvariantCulture
,而不是转义斜杠:

...ToString(@"yyyy/MM/dd", CultureInfo.InvariantCulture)
原因是,
/
是日期的特殊格式字符:

“/”自定义格式说明符表示日期分隔符,用于区分年、月和日。从当前或指定区域性的DateTimeFormatInfo.DateSeparator属性检索适当的本地化日期分隔符

像这样试试

string newFormat = DateTime.ParseExact("30/01/2018", "dd/MM/yyyy", CultureInfo.InvariantCulture)
    .ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);
string result = DateTimeOffset.ParseExact(startDate.Text.ToString(),"yyyy/MM/dd", CultureInfo.InvariantCulture).ToString();
你可以试试这个代码

string dateString = startDate.Text.ToString();
string format="yyyy/MM/dd"; 
string result;
CultureInfo provider = CultureInfo.InvariantCulture;
result = DateTimeOffset.ParseExact(dateString, format, provider).ToString();
或者你可以像这样把它捆成一行

string newFormat = DateTime.ParseExact("30/01/2018", "dd/MM/yyyy", CultureInfo.InvariantCulture)
    .ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);
string result = DateTimeOffset.ParseExact(startDate.Text.ToString(),"yyyy/MM/dd", CultureInfo.InvariantCulture).ToString();

更多信息

请尝试使用以下示例代码:-

var  actualStartDate = DateTime.ParseExact(startDate.Text.ToString(),"yyyy/MM/dd", CultureInfo.InvariantCulture);
你可以用这个

String.Format("{0: yyyy/MM/dd}", yourDate);

您在
startDate.Text中拥有的内容
您的代码使用它执行的服务器或客户机的默认区域设置。如果区域设置无法理解字符串的格式,则无法将其转换为正确的日期时间值。此代码运行的区域设置是什么?(顺便说一句,文本已经是一个字符串属性,对其调用ToString没有意义)您是否要将其传递给一个新变量?同样,只有两个参数的ParseExact也没有重载,第一个示例也是如此。如果不添加CultureInfo参数StartDate.Text=“30/01/2018”@un-Lucky,则两者都不会编译。需要转义的是反斜杠字符,而不是正斜杠。@Steve编辑是否回答了您的问题?反斜杠不需要使用
@“string”
进行转义,也不需要转义。只需在
ToString()
方法中使用
CultureInfo.InvariantCulture
,您就不必担心区域性的日期分隔符了。@grek40因为您不需要在第一个dd/MM/yyyy之前使用逐字字符,所以不需要在second@Nino是的,我已经提到这是第二个选择。。。但同样有效的方法是转义一个特殊字符,以便按字面意思使用:)更多信息