11

この日付を api から文字列として解析しました: DD-MM-YYYY ですが、日付が DD-M-YYYY または DM-YYYY である場合もあります。

例えば:

2013 年 4 月 1 日 または 2013 年 10 月 10 日 または2013 年 7 月 4 日

年は常に 4 桁ですが、日または月は 1 桁になることがあります。手動で(JSを使用して)すべての数字の前に0を追加するにはどうすればよいですか?

一部の計算に moment.js を使用しているため、「-」を使用して削除しています

date.replace("-", "")

整数 (例: 4-1-2013 = 412013) を取得するため、moment.js で使用できますが、1 桁の場合はすべてめちゃくちゃになります。

4

4 に答える 4

18

次のように、最初に文字列を正規化できます。

date = date.replace(/\b(\d{1})\b/g, '0$1');

これは、1桁の「単語」を取り、先頭にゼロを追加します。

すべてをグローバルに置き換えるに-は、次の正規表現バージョンを使用する必要があることに注意してください。使用し.replaceた文字列バージョンは、最初の出現のみを置き換えるため、次のようになります。

date = date.replace(/\b(\d{1})\b/g, '0$1').replace(/-/g, '');

あなたが必要とするすべてを行います。

于 2013-02-04T11:45:27.837 に答える
11

Moment.js はダッシュを含む形式をサポートしているため、文字列を処理する必要さえありません。

moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY");   // 04012013
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013
于 2013-02-04T17:16:14.083 に答える
2

日付変数が文字列形式 (たとえば からinput[type=date]) の場合、データ コンポーネントを単一の項目に分割する必要があります。

date = date.split('-');

次に、日と月の長さの両方を確認します

day = date[0].length==1 ? "0"+date[0] : date[0];
month = date[1].length==1 ? "0"+date[1] : date[1];

次に、それらを元に戻して、希望する形式にします

date = ""+day+month+date[2];

作業例: http://jsfiddle.net/dzXPE/

于 2013-02-04T11:45:16.587 に答える
0
var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
    day = '0' + day;
}

月間も同様にご利用いただけます。文字列に変換する必要があるかどうかは完全にはわかりませんが、害はありません。

于 2013-02-04T11:41:05.657 に答える