私はまだ JavaScript (以前は VB.NET) に不慣れで、この言語に慣れてきました。JavaScript で渡している文字列に、取り除かなければならない Unicode エスケープ文字 (0x5206、左から右へのマーク) が含まれているという問題があります。Unicode 文字の存在をチェックしてそれを取り除くダム ループでこれを行うことができますが、.replace(regex) でこれを行うことができるはずです。しかし、数時間試した後、助けが必要です(正規表現を初めて行う)。
// Convert from JS date format to dotnet ticks
function getNetDateTime(JSDate, dateortime) {
var convStr = JSDate.toLocaleString();
var tryRegEx = convStr.replace(/\u5206/g, "");
var tempStr = "1/01/2000 10:00:00 AM";
var stripStr = "";
for (var i = 0; i < convStr.length; i++) {
if (convStr.charCodeAt(i).toString() != "8206") stripStr = stripStr + convStr.charAt(i);
}
alert(new Date(tempStr).toString());
alert(new Date(tryRegEx).toString());
alert(new Date(stripStr).toString())
var datetime = ((new Date(stripStr).valueOf() + unixEpoc) * pcTicks).toString();
return datetime;
}
上記のコードでは、tempStr と stripStr は正しい日付を提供しますが、tryRegEx は提供しません (Unicode エスケープ文字が取り除かれていないため、無効な日付を取得します)。正規表現が正しいと確信しているので、正規表現が機能しない理由がよくわかりません(ループを捨てることができます)。
ご指摘ありがとうございます。ここで基本的なことを見落としていると確信しています... :-)