DateTime.TryParse 无文化
DateTime.TryParse without Culture
我想检查日期是否可以解析。但是当我尝试使用以下逻辑时,它正在落入有效日期(例如: 3 / 10 / 2020)。
我通过 ajax 请求收到这个 myDate。
我试过改变文化,但还是没用
DateTime validMyDate;
if(DateTime.TryParse(myDate, CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out validMyDate)){}
感谢您的帮助
已编辑: 请在此处找到 ajax 代码
//fileds
<input name="StartDate" id="StartDate" type="hidden" value="3/10/2020 12:00:00 AM" data-val="true">
<input name="EndDate" id="EndDate" type="hidden" value="3/26/2020 12:00:00 AM" data-val="true">
// ajax call
$.get(domainUrl + "Controller/Action",
{
strartDate: dateFormatter.fomat($('#StartDate').val(), "mm/dd/yyyy"),
endDate: dateFormatter.fomat($('#EndDate').val(), "mm/dd/yyyy");
},
function (result) {
}).fail(function (error) {
});
// date formatter
var dateFormatter = {
fomat: function (date, format) {
var year = date.getFullYear();
var month = date.getMonth() < 10 ? '0' + date.getMonth() : date.getMonth();
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var newDate;
switch (format) {
case "dd/mm/yyyy": newDate = day + "/" + month + "/" + year;
break;
default: newDate = year + "-" + month + "-" + day;
}
return newDate;
}
}
请注意 : 增加了这个格式化功能,因为.val()
一开始没用,所以我重新格式化一下看看是否能用。
此代码绝对有效:
if (DateTime.TryParseExact("3/10/2020","d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime validStartDate))
{
}
但是你的琴弦有些烂了。如果我从您上面的评论中复制“3/10/2020”,它不起作用。如果我自己写它,它就可以工作。你的字符串一定是某种奇怪的编码,但我无法确定它是什么。
编辑:
要删除不可见字符,请执行以下操作:
var str = "3/10/2020";
str = str.Replace("\u200E","");
if (DateTime.TryParseExact(str,"d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime validStartDate))
{
}
但这将是一个 hack。问题应该换到另一端。
我想检查日期是否可以解析。但是当我尝试使用以下逻辑时,它正在落入有效日期(例如: 3 / 10 / 2020)。 我通过 ajax 请求收到这个 myDate。
我试过改变文化,但还是没用
DateTime validMyDate;
if(DateTime.TryParse(myDate, CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out validMyDate)){}
感谢您的帮助
已编辑: 请在此处找到 ajax 代码
//fileds
<input name="StartDate" id="StartDate" type="hidden" value="3/10/2020 12:00:00 AM" data-val="true">
<input name="EndDate" id="EndDate" type="hidden" value="3/26/2020 12:00:00 AM" data-val="true">
// ajax call
$.get(domainUrl + "Controller/Action",
{
strartDate: dateFormatter.fomat($('#StartDate').val(), "mm/dd/yyyy"),
endDate: dateFormatter.fomat($('#EndDate').val(), "mm/dd/yyyy");
},
function (result) {
}).fail(function (error) {
});
// date formatter
var dateFormatter = {
fomat: function (date, format) {
var year = date.getFullYear();
var month = date.getMonth() < 10 ? '0' + date.getMonth() : date.getMonth();
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var newDate;
switch (format) {
case "dd/mm/yyyy": newDate = day + "/" + month + "/" + year;
break;
default: newDate = year + "-" + month + "-" + day;
}
return newDate;
}
}
请注意 : 增加了这个格式化功能,因为.val()
一开始没用,所以我重新格式化一下看看是否能用。
此代码绝对有效:
if (DateTime.TryParseExact("3/10/2020","d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime validStartDate))
{
}
但是你的琴弦有些烂了。如果我从您上面的评论中复制“3/10/2020”,它不起作用。如果我自己写它,它就可以工作。你的字符串一定是某种奇怪的编码,但我无法确定它是什么。
编辑: 要删除不可见字符,请执行以下操作:
var str = "3/10/2020";
str = str.Replace("\u200E","");
if (DateTime.TryParseExact(str,"d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime validStartDate))
{
}
但这将是一个 hack。问题应该换到另一端。