0

次のようなものを返すc#コードがあります

javascript コードに日付として「2013-11-05T16:55:34.7567325-05:00」。

これを「11/05/2013」のように表示するにはどうすればよいですか?

4

3 に答える 3

1

ECMAScript でサポートされている日付文字列形式は 1 つだけで、それは ISO 8601 のバージョンです。ただし、使用されているすべてのブラウザーがそれをサポートしているわけではなく、ほとんどのブラウザーは異なるタイムゾーンをサポートしていません。それ以外の場合、日付文字列の解析は実装に依存します (つまり、ブラウザーごとに異なります)。

さまざまな文字列形式の (非標準) サポートがありますが、それらは普遍的にサポートされているわけではありません。

したがって、最善の策は、文字列を手動で解析することです。

// parse an ISO 8601 date string with time zone
// e.g. "2013-11-05T16:55:34.7567325-05:00"  -> Wed Nov 06 2013 07:55:34 GMT+1000
// Any missing date value is treated as "01", any missing time value is 0.
// A missing timezone is treated as "Z" (UTC).
// Civil timezone abbreviations (e.g. EST, CET) are not supported
function isoStringToDate(s) {

  // Split into parts
  var p = s.split(/\D/);

  // Calculate offset as minutes to add using sign
  // A missing timezone is treated as UTC
  var offsetSign = /-\d\d:\d\d$/.test(s)? 1 : -1;
  var offset = offsetSign * ((p[7] || 0) * 60 + +(p[8] || 0));

  // Get milliseconds - pad if required. Values beyond 3 places are
  // truncated by the Date constructor so will not be preserved in the
  // resulting date object (i.e. it's a limitation of Date instances)
  p[6] = (p[6]? p[6] : '0') + '00'; 
  var ms = p[6].substring(0,3) + '.' + p[6].substring(3);

  // Create local date as if values are UTC
  var d = new Date(Date.UTC(p[0], p[1]? --p[1] : 0, p[2] || 1, 
                            p[3] || 0, p[4] || 0, p[5] || 0, ms)); 

  // Adjust for timezone in string
  d.setMinutes(d.getMinutes() + offset);
  return d;
}

// Given a Date object, return a string in the US format mm/dd/yyyy
function formatAsUSDateString(d) {
  function z(n){return (n<10?'0':'') + n;}
  return z(d.getMonth() + 1) + '/' + z(d.getDate()) + '/' + d.getFullYear();
}

var d = isoStringToDate('2013-11-05T16:55:34.7567325-05:00');

console.log(formatAsUSDateString(d)); // 11/06/2013 for me but I'm UTC+10

タイムゾーンでは、「Z」または「+/-HH:mm」を使用できます (+/-HH:mm 以外はすべて Z として扱われます)。ES5 で指定されたすべてのISO 8601 文字列形式をサポートします。欠落している日付部分は "1" として扱われ、欠落している時刻部分は "0" として扱われます (例: "2013-11" -> "2013-11-01T00:00:00Z")。

于 2013-11-05T23:09:51.973 に答える
0

この日付文字列は、javascript の datetime オブジェクトに変換できます。必要なものを取得するには、コードを参照してください。

オプション A: JavaScript 経由

var yourDateString = '2013-11-05T16:55:34.7567325-05:00'; //date that you receive from c#
var yourDate = new Date(yourDateString);
var yourFormatedDate = yourDate.getDay() + "/" + yourDate.getMonth() + "/" + yourDate.getFullYear();

alert(yourFormatedDate);

オプション B: C# 経由

コードビハインド:

String formateDate = String.Format("{0:MM/dd/yyyy}", yourDateVar);

ASP.NET の JavaScript に直接:

var javascriptVar = '<%=String.Format("{0:MM/dd/yyyy}", yourDateVar); %>';
于 2013-11-05T22:02:29.920 に答える