将JS日期解析为C#日期时间
Parse JS date to C# DateTime
我有一个javascript日期对象,它给我一个格式为"2012年9月4日星期二B0100(GMT夏令时)"的日期字符串
我正试图用这里提到的ParseEaxcat进行解析,但它抛出了一个无效的日期异常——任何人都会给我指明正确格式的方向
string date = "Tue Sep 04 2012B0100 (GMT Daylight Time)";
dt = DateTime.ParseExact(date,"ddd MMM dd yyyyBzzzz",
CultureInfo.InvariantCulture);
我也不高兴地看着这个:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
如果可以(这听起来像是因为你有了对象),我建议从Javascript(.getTime())中提取自1970/01/01以来的毫秒数,将其转换为.Net ticks(100纳秒单位),并使用它来解析成C#DateTime。
var ticks = (jsMillis * 10000) + 621355968000000000;
var date = new DateTime(ticks);
其中,jsMillis是通过对Javascript DateTime对象调用getTime()获得的数字。
621355968000000000是从C#的日期原点(1月1日午夜)转换为javascript的日期原点。
这很有效。不过,为了避免在线拆分,您可能需要在传入之前去掉GMT夏令时部分。
string date = "Tue Sep 04 2012B0100 (GMT Daylight Time)";
var dt = DateTime.ParseExact(date.Split('(')[0].Replace("B","+").Trim(), "ddd MMM dd yyyyzzz", CultureInfo.InvariantCulture);
已编辑以说明偏移。
我从JavaScript中获得了不同的日期-时间格式。以下是我必须做的:
public void Main()
{
Console.WriteLine(
ConvertJsDate("Fri Apr 18 2014 16:23:18 GMT-0500 (Central Daylight Time)"));
//test more regular date
Console.WriteLine(
ConvertJsDate("4/18/2014 16:23:18"));
}
public DateTime ConvertJsDate(string jsDate)
{
string formatString = "ddd MMM d yyyy HH:mm:ss";
var gmtIndex = jsDate.IndexOf(" GMT");
if (gmtIndex > -1)
{
jsDate = jsDate.Remove(gmtIndex);
return DateTime.ParseExact(jsDate, formatString, null);
}
return DateTime.Parse(jsDate);
}
另一种方法是在JavaScript端将日期转换为合理的表示形式,这将显著增强健壮性:无需猜测语言服务器端,可以正确处理时区。
如果您使用某种自动转换(即JSON.stringfy),您可能需要添加一个与日期字段平行的、具有相同值的字符串表示的字段,并在服务器端使用它,而不是原始字段。
{ dateFied: new Date(),
dateFiledAsIsoString: "....." }
如果决定走这条路,还可以考虑将时区(时间偏移)传递到服务器端代码,或者在JavaScript端将时间转换为UTC。考虑对日期使用ISO8601格式:yyyy-MM-ddTHH:MM:ss.fffffzzz.
有很多方法可以做到这一点。。。但这是我发现的最简单的。。。
// JavaScript
var d = new Date();
d.toLocaleString();
// => "6/26/2015, 2:07:25 PM"
// Can be Parsed by the C# DateTime Class
DateTime d = DateTime.Parse( @"6/26/2015, 2:07:25 PM" );
Console.WriteLine( d.ToLongDateString() );
// => Friday, June 26, 2015
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 使用时刻.js从日期时间中提取时间
- 两个日期时间选择器
- Javascript:如何在onChange事件期间更改日期时间值
- .Net webApi ISO日期时间和IE8
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- JavaScript JSON关联对象键和值都作为日期时间戳
- 将日期时间javascript绑定到表列
- 将JS日期解析为C#日期时间
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 从javascript数组获取php的日期时间
- 格式化momentjs日期时间
- 这个正则表达式的日期/时间有什么问题
- Mongoose查询在两个日期时间之间提取数据
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 自定义angularjs过滤器日期时间格式额外字符