0

文字列値を JavaScript Date 形式に変換しようとしていますが、datejs などの追加のライブラリを使用せずに簡単な方法を見つけられないようです

var dateString = "20131120";
    var date       = new Date(dateString);
console.log(date);
     // I need to add an additional day to the original string
    var newDate    = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()+1);
console.log(newDate);

どんなヒントでも大歓迎です。

4

4 に答える 4

5

このコードを試してみてください

 var dateString  = "20131120";
    var year        = dateString.substring(0,4);
    var month       = dateString.substring(4,6);
    var day         = dateString.substring(6,8);
    var date        = new Date(year, month-1, day);

ここでは、単純な部分文字列メソッドを使用しました

First (0,4) will extract the year then next two is for month and next two is for day of month

  NOTE:
    Here we doing  `month-1` because it will count from 0 e.g (january==0).

それが役に立てば幸い

于 2013-09-26T12:38:22.920 に答える
3

簡単な正規表現:

new Date("20131120".replace(/(\d{4})(\d{2})(\d{2})/,"$2/$3/$1"))

非常に基本的な正規表現です。

4 つの数字を一致させる、2 つの数字を一致させる、グループ内の 2 つの数字を一致させる。

$1 は最初の一致、$2 は 2 番目の一致、$3 は 3 番目の一致です。正規表現について学びます。

于 2013-09-26T12:32:46.337 に答える
2

ES5 より前は、日付文字列の解析は完全に実装に依存していました。現在、ISO8601 のバージョンが指定されていますが、使用中のすべてのブラウザーでサポートされているわけではありません。したがって、最善の方法は手動で解析することです。

したがって、この場合は次のようにします。

var dateString = "20131120";
var m = dateString.match(/\d\d/g);
var date = new Date(m[0] + m[1], --m[2], m[3]);

これは、JavaScript をサポートする使用中のブラウザーで動作します。

于 2013-09-26T12:42:28.520 に答える
-2

最善の方法は、ISO 形式を使用することです: YYYY-MM-DD または YYYY-MM-DDTHH:MM:SS

例: new Date('2011-04-11')

また

新しい日付('2011-04-11T11:51:00')

詳細情報: MDN | 日にち

古い Internet Explorer との互換性 (9 未満の IE バージョンは、Date コンストラクターで ISO 形式をサポートしていません) のために、日時文字列表現をその部分に分割し、日時部分を使用してコンストラクターを使用できます。 04' - 1、'11'、'11'、'51'、'00')

月の数は 1 少なくする必要があることに注意してください。

于 2013-09-26T12:40:24.747 に答える