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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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 MVC)_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Datetime - Fatal编程技术网

日期转换(c#,Asp.net MVC)

日期转换(c#,Asp.net MVC),c#,asp.net,asp.net-mvc,asp.net-mvc-4,datetime,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Datetime,我正在尝试转换asp.net mvc web应用程序上的日期时间格式 我有以下代码: date = Request["date"].AsDateTime().ToString("MM-dd-yyyy HH:mm:ss"); 当请求[“日期”]仅为当天的一位数字时,该代码工作正常 (如2016年3月8日)但当日期为两位数时 (如2016年3月15日) 它返回01-01-0001。。。有人能告诉我为什么,并告诉我如何使它更好吗 提前谢谢 编辑: 我正在使用的更多代码: 用于日期选择的Javascr

我正在尝试转换asp.net mvc web应用程序上的日期时间格式

我有以下代码:

date = Request["date"].AsDateTime().ToString("MM-dd-yyyy HH:mm:ss");
当请求[“日期”]仅为当天的一位数字时,该代码工作正常
(如2016年3月8日)但当日期为两位数时 (如2016年3月15日)

它返回01-01-0001。。。有人能告诉我为什么,并告诉我如何使它更好吗

提前谢谢

编辑:

我正在使用的更多代码:

用于日期选择的Javascript日期选择器:

<script>
    $(document).ready(function() {
        $('.date').datepicker({ dateFormat: "dd/mm/yy" });
    });
</script>
试试这个:

DateTime unformattedDate;
if(DateTime.TryParse(Request["date"], out unformattedDate)
{
   DateTime formattedDate = unformattedDate.ToString("MM-dd-yyyy HH:mm:ss");
}
试试这个:

DateTime unformattedDate;
if(DateTime.TryParse(Request["date"], out unformattedDate)
{
   DateTime formattedDate = unformattedDate.ToString("MM-dd-yyyy HH:mm:ss");
}
.AsDateTime()
方法使用您当前的计算机区域性(这取决于您的应用程序
App.Config
Web.Config

如果您100%确定您的日期为
dd-MM-yyyy
格式,则可以按如下方式进行打包:

DateTime.ParseExact(Request["date"], "dd-MM-yyyy", CultureInfo.InvariantCulture)
.ToString("MM-dd-yyyy HH:mm:ss");
$('.datepicker').datepicker({ dateFormat: '@System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern' });
正如Stephen Muecle提到的,最好使用
DateTime.TryParseExact()
方法:

//here you can define more that one format to parce
string[] formats = { "dd-MM-yyyy"};
DateTime resultDate = new DateTime();
if (DateTime.TryParseExact(Request["date"], formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out resultDate))
{
    //if everything good you will have your date in resultDate variable
    date = resultDate.ToString("MM-dd-yyyy HH:mm:ss"); 
}
else
{ 
    //here the logic if parce fails
}
作为Panagiotis Kanavos menthion,硬编码文化不是一个好主意。如果你想把事情做好,你就应该应对全球化

Web.Config
中,您应该设置
uiCulture
culture

<globalization uiCulture="en-GB" culture="en-GB" />
如果您在
Web.Config
中设置全球化,您的whoule应用程序区域性将同步,您甚至可以使用
.AsDateTime()

.AsDateTime()
方法使用您当前的计算机区域性(这取决于您的应用程序
App.Config
Web.Config

如果您100%确定您的日期为
dd-MM-yyyy
格式,则可以按如下方式进行打包:

DateTime.ParseExact(Request["date"], "dd-MM-yyyy", CultureInfo.InvariantCulture)
.ToString("MM-dd-yyyy HH:mm:ss");
$('.datepicker').datepicker({ dateFormat: '@System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern' });
正如Stephen Muecle提到的,最好使用
DateTime.TryParseExact()
方法:

//here you can define more that one format to parce
string[] formats = { "dd-MM-yyyy"};
DateTime resultDate = new DateTime();
if (DateTime.TryParseExact(Request["date"], formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out resultDate))
{
    //if everything good you will have your date in resultDate variable
    date = resultDate.ToString("MM-dd-yyyy HH:mm:ss"); 
}
else
{ 
    //here the logic if parce fails
}
作为Panagiotis Kanavos menthion,硬编码文化不是一个好主意。如果你想把事情做好,你就应该应对全球化

Web.Config
中,您应该设置
uiCulture
culture

<globalization uiCulture="en-GB" culture="en-GB" />
如果您在
Web.Config
中设置全球化,您的whoule应用程序区域性将同步,您甚至可以使用
.AsDateTime()

尝试使用以下方法:

DateTime date = new DateTime();
date = (DateTime)Request["date"];
String myDate=date.ToString();
尝试使用以下方法:

DateTime date = new DateTime();
date = (DateTime)Request["date"];
String myDate=date.ToString();


很可能是因为
.AsDateTime()
扩展方法使用的区域性是
MM-dd-yyyy
11-03-2016
有效吗?为什么要从请求对象读取查询参数,而不是使用操作参数?为什么要使用本地化格式,而不是可以明确解析的2015-03-15格式?该参数来自何处?如果将其更改为ISO格式,甚至可以在操作中使用DateTime类型的参数method@StephenMuecke是的,2016年3月11日working@PanagiotisKanavos我之所以使用该请求,是因为我在视图中使用了javascript日期选择器,而这就是日期的来源扩展方法正在使用区域性解析数据,该区域性为
MM dd yyyy
-
11-03-2016
有效吗?为什么要从请求对象读取查询参数而不是使用操作参数?为什么要使用本地化格式,而不是可以明确解析的2015-03-15格式?该参数来自何处?如果将其更改为ISO格式,您甚至可以在操作中使用DateTime类型的参数method@StephenMuecke是的,2016年3月11日working@PanagiotisKanavos我之所以使用请求,是因为我在视图中使用了javascript日期选择器,这就是日期的来源。为什么不以完全相同的方式失败?为什么不以完全相同的方式失败方法?
TryParseExact()
最好避免任何潜在的异常。硬编码日期格式是个坏主意。使用标准YYYY-MM-DD要好得多format@StephenMuecke实际上情况会更糟,因为即使日期文本无效,它也允许处理-除非使用正确的处理代码(例如检查丢失的、无效的值)@PanagiotisKanavos,如果使用
TryParseExact()
您可以在使用
之前测试结果。ToString()
@PanagiotisKanavos同意最好使用标准格式。但是,如果你必须本地化你的应用程序,你必须在你的所有应用程序中同步你的区域性,并从
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
TryParseExact()
中获取格式,以避免任何潜在的异常。硬编码日期格式是个坏主意。使用标准YYYY-MM-DD要好得多format@StephenMuecke实际上情况会更糟,因为即使日期文本无效,它也允许处理-除非使用正确的处理代码(例如检查丢失的、无效的值)@PanagiotisKanavos,如果使用
TryParseExact()
您可以在使用
之前测试结果。ToString()
@PanagiotisKanavos同意最好使用标准格式。但是,如果你必须本地化你的应用程序,你必须在你的所有应用程序中同步你的区域性,并从
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
获取你的格式。