Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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
日期时间值从javascript错误地传递到C#_Javascript_C# - Fatal编程技术网

日期时间值从javascript错误地传递到C#

日期时间值从javascript错误地传递到C#,javascript,c#,Javascript,C#,我正在使用下面的代码调用控制器 DateFrom: moment.utc($(".datefrom").val(), "DD/MM/YYYY").toString() 在ajax调用中,我有一个断点,并检查了传递的内容和值 "Wed Jun 20 2018 00:00:00 GMT+0000" 但当我在C#中检查时,这就是通过的 其他值传递正确,但此DateFrom存在问题 我检查了两个属性名称,它们完全相同 我遗漏了什么?这是因

我正在使用下面的代码调用控制器

DateFrom: moment.utc($(".datefrom").val(), "DD/MM/YYYY").toString()
在ajax调用中,我有一个断点,并检查了传递的内容和值

"Wed Jun 20 2018 00:00:00 GMT+0000"
但当我在C#中检查时,这就是通过的

其他值传递正确,但此DateFrom存在问题

我检查了两个属性名称,它们完全相同


我遗漏了什么?

这是因为javascript使用1970-01-01和c#01/01/1900以来的毫秒作为日期,所以毫秒有很大的差异

我建议您将字符串格式更改为dd/MM/yyyy HH:MM:ss

最好的方法是将javascript中的日期转换为c#可以识别的字符串

var date = new Date();
var day = date.getDate();       // yields date
var month = date.getMonth() + 1;    // yields month (add one as '.getMonth()' is zero indexed)
var year = date.getFullYear();  // yields year
var hour = date.getHours();     // yields hours 
var minute = date.getMinutes(); // yields minutes
var second = date.getSeconds(); // yields seconds
var data= day + "/" + month + "/" + year + " " + hour + ':' + minute + ':' + second;
然后用C语言将“数据”发送到控制器#


始终使用表示法序列化日期时间值。大多数库,包括momentjs,都内置了将datetime实例转换为字符串以及从back解析为datetime实例的方法(解析momentjs时无需额外调用,构造函数将在无需额外输入的情况下处理)


请记住,这与在屏幕上显示值无关。对于进行查看/输入的用户,应本地化显示和/或编辑值。序列化值是在层或设备之间发送的值。

始终使用符号序列化日期时间值。大多数库,包括momentjs,都内置了将datetime实例转换为ISO8601字符串并对其进行解析的方法(解析时无需对momentjs进行额外调用,构造器将在无需额外输入的情况下对其进行处理),在传递日期时从不使用不明确的格式。使用类似于
YYYY/MM/DD
或更好的ISO8601之类的工具更安全。这里的
time.utc()
的返回值是多少?JS代码中的
$
是否代表jQuery?您得到的是
DateTime.MinValue
,因此没有传递任何内容。您能否显示更多相关代码、ajax调用以及目标变量的声明和赋值?DateFrom的值为“Wed Jun 20 2018 00:00:00 GMT+0000”。
DateTime date=DateTime.ParseExact(data, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);