Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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# 将日期和时间从JavaScript解析为C_C#_Javascript - Fatal编程技术网

C# 将日期和时间从JavaScript解析为C

C# 将日期和时间从JavaScript解析为C,c#,javascript,C#,Javascript,我有一些JavaScript代码,我正试图传递给我的web服务。我的JavaScript代码应该以UTC格式发送日期。在本地,我生成代码的时间是下午12:30:43。当我执行JavaScript代码时,生成了以下日期/时间: 2012-06-03T20:30:43.000Z 该日期/时间由以下代码生成: var now = new Date(); var utcDate = new Date( now.getUTCFullYear(), now.getUTCMonth(), now.

我有一些JavaScript代码,我正试图传递给我的web服务。我的JavaScript代码应该以UTC格式发送日期。在本地,我生成代码的时间是下午12:30:43。当我执行JavaScript代码时,生成了以下日期/时间:

2012-06-03T20:30:43.000Z

该日期/时间由以下代码生成:

var now = new Date();
var utcDate = new Date(
  now.getUTCFullYear(),
  now.getUTCMonth(),
  now.getUTCDate(),
  now.getUTCHours(),
  now.getUTCMinutes(),
  now.getUTCSeconds()
);
当我将日期/时间从JavaScript传递回我的web服务时,它被序列化,如下所示:

20120603163043

这在我看来是正确的。然后,我需要获取该字符串并将其转换为C中的日期/时间。为此,我使用以下C代码:

DateTime _value = DateTime.MinValue;
DateTime.TryParseExact(value, "yyyyMMddHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out _value)
发生这种情况时,我会得到以下日期/时间。 2012年6月3日下午12:30:43


我做错了什么?我希望日期/时间为2012年3月6日下午4:30:43

您得到的结果是正确的,但请检查DateTime的属性。您会注意到它没有设置为UTC,而是设置为Local

您可以使用DateTimeStyles.AdjustToUniversal生成一个日期时间,其种类设置为UTC


查看它的工作情况。

您得到的结果是正确的,但请检查DateTime的属性。您会注意到它没有设置为UTC,而是设置为Local

您可以使用DateTimeStyles.AdjustToUniversal生成一个日期时间,其种类设置为UTC


查看它的工作情况。

您必须以UTC格式将日期参数传递给web服务,然后使用TryParse方法将其转换为C日期对象

试试这个:

//Javascript
var now = new Date(); //just like: 'Thu, 21 Mar 2013 12:44:40 GMT'
var utcNowString = now.toUTCString(); //pass this parameter to your web service
这是C代码:

DateTime date;
DateTime.TryParse(jsDateString, out date); //parsed as: '21.03.2013 14:44:40' 

希望这有帮助。

您必须以UTC格式将日期参数传递给web服务,然后使用TryParse方法将其转换为C日期对象

试试这个:

//Javascript
var now = new Date(); //just like: 'Thu, 21 Mar 2013 12:44:40 GMT'
var utcNowString = now.toUTCString(); //pass this parameter to your web service
这是C代码:

DateTime date;
DateTime.TryParse(jsDateString, out date); //parsed as: '21.03.2013 14:44:40' 

希望这能有所帮助。

如果您只想使用webAPI等进行序列化,我发现JS toISOString非常有用且兼容

//JAVASCRIPT
var d = new Date();
$toPut.dateTime = d.toISOString();
$toPut.put()

//C#
[Put("/setup/dateTime"), HttpPut]
public HttpResponseMessage SetDateTime([FromBody]DateTime dateTimeSettings )

这样,您可以保留数据结构,而不必处理解析。

如果您只想使用webAPI等进行序列化,我发现JS toISOString非常有用且兼容

//JAVASCRIPT
var d = new Date();
$toPut.dateTime = d.toISOString();
$toPut.put()

//C#
[Put("/setup/dateTime"), HttpPut]
public HttpResponseMessage SetDateTime([FromBody]DateTime dateTimeSettings )
这样,您就可以保留数据结构,而不必处理解析。

我认为使用就足够了。我认为使用就足够了。