Javascript 在客户端(JS)上将C#DateTime转换为LocalTime
在服务器上,我使用Yahoo API获取货币 在结果中,我得到了Javascript 在客户端(JS)上将C#DateTime转换为LocalTime,javascript,c#,datetime,Javascript,C#,Datetime,在服务器上,我使用Yahoo API获取货币 在结果中,我得到了Date和Time,并希望将其转换为DateTime对象,以便稍后将其转换为客户端的本地时间 我是用下面的方法做的 DateTime d = dateOnly.Add(timeOnly.TimeOfDay); 现在我想在客户端将其转换为本地时间(Javascript) 我在客户身上试过了 var d = new Date(d + " UTC"); alert(d.toString()); 编辑d值为2015-04-06T12:
Date
和Time
,并希望将其转换为DateTime
对象,以便稍后将其转换为客户端的本地时间
我是用下面的方法做的
DateTime d = dateOnly.Add(timeOnly.TimeOfDay);
现在我想在客户端将其转换为本地时间(Javascript)
我在客户身上试过了
var d = new Date(d + " UTC");
alert(d.toString());
编辑d值为2015-04-06T12:32:00
但是获取错误
无效日期
请尝试此。。。我假设雅虎CSV是美国格式(m/d/yyyy)。。。如果没有,您需要确定如何在fixYahooDate中提取月份和日期
(function() {
'use strict';
String.prototype.pad = function(c, l) {
return (new Array(l + 1).join(c) + this).substr(-l, l);
};
function fixYahooDate(aDate) {
var match = /(\d?\d)\/(\d?\d)\/(\d+)/gi.exec(aDate);
var m = match[1];
var d = match[2];
var y = match[3];
var sm = m.pad('0', 2);
var sd = d.pad('0', 2);
var fixedDate = sm + "/" + sd + "/" + y;
return fixedDate;
}
function fixYahooTime(aTime) {
var match = /(\d?\d):(\d\d)(am|pm)/gi.exec(aTime);
var h = match[1];
var m = match[2];
var a = match[3];
var sh = h.pad('0', 2);
var fixedTime = sh + ":" + m + ":00 " + a + " UTC";
return fixedTime;
}
function YahooDateTimeToLocal(aDate, aTime) {
var s = fixYahooDate(aDate) + " " + fixYahooTime(aTime);
console.log(s);
var dt = new Date(s);
return dt;
}
var aDate = "4/6/2015";
var aTime = "12:29pm";
var localDt = YahooDateTimeToLocal(aDate, aTime);
console.log(localDt.toString());
}());
只需更改代码就可以正确地形成ISO 8601字符串
var d=新日期(d+“Z”);
Chrome调试控制台的屏幕截图:
或者,您可以通过确保DateTime
值的.Kind
设置为DateTimeKind.Utc
来确保.NET代码添加了Z
例如:
d=DateTime.SpecifyKind(d,DateTimeKind.Utc);
或者更好的是,您可以首先将其解析为UTC
string dateOnly=“4/6/2015”;
字符串timeOnly=“11:32pm”;
DateTime dt=DateTime.ParseExact(dateOnly+“”+timeOnly,
“M/d/yyyy h:mmtt”,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
这可能是最安全的方法。现在这种类型已经是UTC,并且
Z
已经就位。看看Datetime.ParseWell什么是数据[1]。结果中的Datetime
?您还没有告诉我们有关如何向客户端表示DateTime
的任何信息……Jon,d是返回的结果,我已经修改了我的答案(它是一个DateTime对象),同样值得注意的是,特定的API似乎没有返回正确的值。我刚刚运行了它,它的时间比当前UTC时间提前了整整一个小时。我的猜测是,他们正在将本地时区转换为UTC,而不是在转换过程中考虑DST。