cho*_*bo2 49 .net javascript c# datetime
我一直在阅读,如果你想从JavaScript日期转换为C#日期,你应该使用getTime(),然后将结果添加到C#DateTime.
假设我有这个JavaScript时间:
Date {Tue Jul 12 2011 16:00:00 GMT-0700 (Pacific Daylight Time)}
Run Code Online (Sandbox Code Playgroud)
它渲染到1310522400000毫秒
var a = new DateTime(1970, 01, 01).AddMilliseconds(1310522400000);
// result
7/13/2011 2:00:00 AM
Run Code Online (Sandbox Code Playgroud)
所以这是错的.我不确定我需要做什么.
Gar*_*rth 38
您可以使用toJSON() JavaScript方法,它将JavaScript DateTime转换为C#可以识别为DateTime的内容.
JavaScript代码看起来像这样
var date = new Date();
date.toJSON(); // this is the JavaScript date as a c# DateTime
Run Code Online (Sandbox Code Playgroud)
Har*_*run 29
首先使用JavaScript中的以下函数以所需格式创建一个字符串
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
// After this construct a string with the above results as below
var time = day + "/" + month + "/" + year + " " + hour + ':' + minute + ':' + second;
Run Code Online (Sandbox Code Playgroud)
将此字符串传递给codebehind函数并将其作为字符串参数接受.使用DateTime.ParseExact()in codebehind将此字符串转换DateTime为如下所示,
DateTime.ParseExact(YourString, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
小智 28
你几乎是对的,只需要做一点修复:
var a = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
.AddMilliseconds(1310522400000)
.ToLocalTime();
Run Code Online (Sandbox Code Playgroud)
如果您想从 JS 向 C# 发送日期实际上非常简单 - 如果发送 UTC 日期是可以接受的。
var date = new Date("Tue Jul 12 2011 16:00:00 GMT-0700");
var dateStrToSendToServer = date.toISOString();
Run Code Online (Sandbox Code Playgroud)
...发送到 C# 端 ...
var success = DateTimeOffset.TryParse(jsISOStr, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out var result);
Run Code Online (Sandbox Code Playgroud)
C#DateTime已经理解 ISO 日期格式,并且会很好地解析它。
要将 C# 格式化为 JS,只需使用DateTime.UtcNow.ToString("o").
就我个人而言,我从不习惯依赖不同环境之间的数学和逻辑来获得毫秒/滴答以显示用户可能在客户端上看到的完全相同的日期和时间(尤其是在重要的地方)。在转移货币时我也会这样做(使用字符串来代替安全,或者在两个不同的整数之间分开美元和美分)。将日期/时间作为单独的值发送会很好(请参阅已接受的答案)。
DateTime.Parse是一个更好的赌注.JS日期和C#日期不是从同一个根开始的.
样品:
DateTime dt = DateTime.ParseExact("Tue Jul 12 2011 16:00:00 GMT-0700",
"ddd MMM d yyyy HH:mm:ss tt zzz",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
由于我在不同的时区,我的 JavaScript 和 C# 最终在同一日期之间有 2 小时的差异(即使我尝试将日期作为日期发送到网络服务 [未转换为字符串/另一个对象])。
我尝试在 JavaScript 中使用 getTime() 并将毫秒添加到 C# 日期(从 1970 年 1 月 1 日开始),但我的 C# 日期总是提前两个小时结束。
为了保证我会在双方获得相同的日期和时间,我最终这样做了:
在 JavaScript 中,我使用了 UTC 函数:
var jsDate = Date.UTC(year,month,day,hours,minutes,seconds,millisec);
Run Code Online (Sandbox Code Playgroud)
在 C# 中,为了获得正确的 DateTime,我这样做了:
var date = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddMilliseconds(jsDate);
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人。
如果您在应用程序中使用 moment.js。
var x= moment(new Date()).format('DD/MM/YYYY hh:mm:ss')
传递x给代码隐藏函数并将其作为字符串参数接受。使用DateTime.ParseExact()c# 中的 将此字符串转换为 DateTime,如下所示,
DateTime.ParseExact(YourString, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)