如何将Javascriptdatetime转换为C#datetime?我一直在阅读,如果您想将JavaScript日期转换为C#日期,您应该使用getTime()然后将该结果添加到C#DateTime。假设我有这个javascript时间:日期{2011年7月12日星期二16:00:00GMT-0700(太平洋夏令时)}它呈现为1310522400000毫秒vara=newDateTime(1970,01,01).AddMilliseconds(1310522400000);//结果7/13/20112:00:00AM所以这是错误的。我不确定我需要做什么。首先使用JavaScript中的以下函数创建所需格式的字符串vardate=newDate();varday=date.getDate();//产生日期varmonth=date.getMonth()+1;//产生月份(加一,因为'.getMonth()'是零索引)varyear=date.getFullYear();//产生年份varhour=date.getHours();//产生小时数varminute=date.getMinutes();//产生分钟数varsecond=date.getSeconds();//yieldseconds//在此之后构造一个字符串,上面的结果如下vartime=day+"/"+month+"/"+year+""+hour+':'+minute+':'+second;将此字符串传递给代码隐藏函数并将其作为字符串参数接受。使用代码隐藏中的DateTime.ParseExact()将此字符串转换为DateTime,如下所示,DateTime.ParseExact(YourString,"dd/MM/yyyyHH:mm:ss",CultureInfo.InvariantCulture);希望这会有所帮助...您几乎是对的,只需一点点修复:vara=newDateTime(1970,1,1,0,0,0,DateTimeKind.Utc).AddMilliseconds(1310522400000).ToLocalTime();您可以使用toJSON()JavaScript方法将JavaScriptDateTime转换为C#可以识别为DateTime的内容。JavaScript代码看起来像这样vardate=newDate();日期.toJSON();//这是JavaScript日期,因为ac#DateTimeDateTime.Parse是更好的选择。JS日期和C#日期不是从同一个根开始的。示例:DateTimedt=DateTime.ParseExact(“2011年7月12日星期二16:00:00GMT-0700”,“dddMMMdyyyyHH:mm:ssttzzz”,CultureInfo.InvariantCulture);由于我在不同的时区,我的JavaScript和C#最终在同一日期之间有2小时的差异(即使我试图将日期作为日期发送到Web服务[未转换为字符串/其他对象]).我尝试在JavaScript中使用getTime()并将毫秒添加到C#日期(从1970-01-01开始),但我的C#日期总是提前两个小时结束。为了表明我会在两边获得相同的日期和时间,我最终这样做了:在JavaScript中,我使用了UTC函数:varjsDate=Date.UTC(year,month,day,hours,minutes,seconds,millisec);为了在C#中获得正确的DateTime,我这样做了:vardate=newDateTime(1970,1,1,0,0,0,0).AddMilliseconds(jsDate);希望它能帮助别人。如果您在应用程序中使用moment.js。varx=时刻(新日期())。format('DD/MM/YYYYhh:mm:ss')将x传递给代码隐藏函数并将其作为字符串参数接受。使用C#中的DateTime.ParseExact()将此字符串转换为DateTime,如下所示,DateTime.ParseExact(YourString,"dd/MM/yyyyHH:mm:ss",CultureInfo.InvariantCulture);我想你可以使用TimeZoneInfo....转换DateTime....staticvoidMain(string[]args){longtime=1310522400000;DateTimedt_1970=newDateTime(1970,1,1);longtricks_1970=dt_1970.Ticks;longtime_tricks=tricks_1970+time*10000;DateTimedt=newDateTime(time_tricks);Console.WriteLine(dt.ToShortDateString());//结果:7/13dt=TimeZoneInfo.ConvertTimeToUtc(dt);Console.WriteLine(dt.ToShortDateString());//结果:7/12Console.Read();如果您在美国太平洋时区,那么您的纪元是1969年12月31日下午4点。您将自纪元以来的毫秒数添加到newDateTime(1970,01,01)中,因为它没有时区,因此被解释为在您的时区中。将时间瞬间视为自纪元以来的毫秒数并没有错,但理解纪元只是1970-01-01T00:00:00Z。当表示为日期时,没有时区,您无法想到时间的瞬间。如果您想将日期从JS发送到C#,这实际上非常简单-如果发送UTC日期是可以接受的。vardate=newDate("2011年7月12日星期二16:00:00GMT-0700");vardateStrToSendToServer=date.toISOString();...发送到C#端...varsuccess=DateTimeOffset.TryParse(jsISOStr,CultureInfo.InvariantCulture,DateTimeStyles.AssumeUniversal,outvarresult);C#DateTime已经理解ISO日期格式并将对其进行解析。要从C#格式化为JS,只需使用DateTime.UtcNow.ToString("o")。就个人而言,我从来都不喜欢依靠不同环境之间的数学和逻辑来获得毫秒/滴答以显示用户在客户端上看到的完全相同的日期和时间(尤其是在重要的地方)。我也会在转移货币时这样做(使用字符串而不是保险箱,或者在两个不同的整数之间拆分美元和美分)。最好将日期/时间作为单独的值发送(请参阅已接受的答案)。JavaScript(HTML5)函数TimeHelper_GetDateAndFormat(){vardate=newDate();返回MakeValid(date.getDate()).concat(HtmlConstants_FRONT_SLASH,MakeValid(date.getMonth()+1),HtmlConstants_FRONT_SLASH,MakeValid(date.getFullYear()),HtmlConstants_SPACE,MakeValid(date.getHours()),HtmlConstants_COLON,MakeValid(date.getMinutes()),HtmlConstants_COLON,MakeValid(date.getSeconds()));}functionMakeValid(timeRegion){returntimeRegion!==undefined&&timeRegionC#privateconststringDATE_FORMAT="dd/MM/yyyyHH:mm:ss";公共日期时间?JavaScriptDateParse(stringdateString){DateTime日期;返回DateTime.TryParseExact(dateString,DATE_FORMAT,CultureInfo.InvariantCulture,DateTimeStyles.None,过期)?日期:空;}Harun的回答中有一些错误已在下面更正:1)harun使用getDay())不正确的日期应该是getDate()2)getMonth()比实际月份少一个月,所以我们应该按如下方式将其递增1vardate=newDate();varday=date.getDate();//产生varmonth=date.getMonth()+1;//产量monthvaryear=date.getFullYear();//产生年份varhour=date.getHours();//产生小时数varminute=date.getMinutes();//产生分钟varsecond=date.getSeconds();//yieldsseconds//在此之后构造一个字符串,上面的结果如下vartime=day+"/"+month+"/"+year+""+hour+':'+minute+':'+second;将此字符串传递给代码隐藏函数并将其作为字符串参数接受将此字符串使用代码隐藏中的DateTime.ParseExact()转换为DateTime,如下所示,DateTime.ParseExact(YourString,"dd/MM/yyyyHH:mm:ss",CultureInfo.不变文化);这对我有用!希望这对你也有帮助。JS:函数createDateObj(date){varday=date.getDate();//产生varmonth=date.getMonth();//产生月份varyear=date.getFullYear();//产生年份varhour=date.getHours();//产生小时数varminute=date.getMinutes();//产生分钟varsecond=date.getSeconds();//产生秒数varmilliseconds=date.getMilliseconds();varjsDate=Date.UTC(年、月、日、时、分、秒、毫秒);返回jsDate;}JS:varoRequirementEval=newObject();vardate=newDate($("#dueDate").val());CS:requirementEvaluations.DeadLine=newDateTime(1970,1,1,0,0,0,DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(arrayUpdateRequirementEvaluationData["DeadLine"])).ToLocalTime();更新:从.NET版本4.6开始,使用DateTimeOffset结构的FromUnixTimeMilliseconds方法:DateTimeOffset.FromUnixTimeMilliseconds(1310522400000).DateTime也可以使用Moment.js库将Js时间发送给C#:JavaScript:vardateString=moment(newDate()).format('LLLL')C#:日期时间.Parse(日期字符串);我能够使用@Garth指出的解决方案解决问题以上是C#学习教程:HowtoconvertJavascriptdatetimetoC#datetime?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---date.toJSON()本文收集自网络,不代表立场.如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处:
