66

重複の可能性:
JavaScriptのDate.parseを拡張してDD / MM / YYYY(米国以外の形式の日付)を許可しますか?
dd-mm-yyyy文字列を日付に変換します

テキストボックスに日付を入力しました(例: 1985年5月9日)。 1985年9月5日(dd- MMM -yyyy)形式に変換したいと思いました。どうすればこれを達成できますか?ソース形式はorまたはor形式である可能性があることに注意してください。dd-mm-yyyydd/mm/yyyydd-mmm-yyyy

コードスニペット:

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val());
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

このコードは1985年5月9日を返しますが、1985年9月5日必要です。ありがとう。

4

5 に答える 5

76

操作を簡単にするためにネイティブのjavascript日付オブジェクトをラップするhttp://momentjs.com/のようなヘルパーライブラリを使用することをお勧めします

次に、次のようなことができます。

var day = moment("12-25-1995", "MM-DD-YYYY");

また

var day = moment("25/12/1995", "DD/MM/YYYY");

その後、日付に操作します

day.add('days', 7)

ネイティブのJavaScriptの日付を取得するには

day.toDate();
于 2012-05-03T12:35:19.973 に答える
68

アップデート

以下にあなたが言った:

申し訳ありませんが、以前は日付形式を予測できませんでした。dd-mm-yyyyまたはdd / mm / yyyyまたはdd-mmm-yyyy形式のようになります。最後に、このすべての形式をdd-MMM-yyyy形式に変換したいと思いました。

それは問題を完全に変えます。フォーマットを制御できない場合は、はるかに複雑になります。JavaScriptには、日付形式を指定できるものは何も組み込まれていません。公式には、JavaScriptでサポートされている唯一の日付形式はISO-8601の簡略化バージョンですyyyy-mm-dd、実際にはほとんどすべてのブラウザもyyyy/mm/dd同様にサポートしています。ただし、それ以外の場合は、コードを自分で作成するか、(これははるかに理にかなっていますが)優れたライブラリを使用する必要があります。私はおそらくmoment.jsDateJSのようなライブラリを使用するでしょう(DateJSは何年も維持されていませんが)。


元の答え

形式が常に dd/mm/yyyyの場合、これは簡単です。

var parts = str.split("/");
var dt = new Date(parseInt(parts[2], 10),
                  parseInt(parts[1], 10) - 1,
                  parseInt(parts[0], 10));

split指定された区切り文字で文字列を分割します。次に、を使用parseIntして文字列を数値に変換し、new Dateコンストラクターを使用してそれらの部分からを構築しDateます。3番目の部分は年、2番目の部分は月、最初の部分は日です。Dateゼロベースの月番号を使用するため、月番号から1を引く必要があります。

于 2012-05-03T11:25:38.273 に答える
14

Date.parse特定の形式のみを認識し、入力形式を指定するオプションはありません。この場合、入力はの形式mm/dd/yyyyであると見なされるため、結果は正しくありません。

これを修正するには、入力を自分で解析してからString.split手動でオブジェクトを作成するか、 datejsDateなどのよりフル機能のライブラリを使用する必要があります。

手動解析の例:

var input = $('#' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));

date.jsの使用例:

var input = $('#' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");
于 2012-05-03T11:25:44.857 に答える
3

これを試して:

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val().toString().replace(/([0-9]+)\/([0-9]+)/,'$2/$1'));
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

RegExpは、.replace(/([0-9]+)\/([0-9]+)/,'$2/$1')日/月の変更位置を置き換えます。

于 2012-05-03T11:29:11.377 に答える
-6

このhttp://blog.stevenlevithan.com/archives/date-time-formatを参照してください

あなたは日付で何でもすることができます。

ファイル:http ://stevenlevithan.com/assets/misc/date.format.js

スクリプトタグを使用してこれをhtmlコードに追加し、使用するには次のように使用できます。

var now = new Date();

now.format("m/dd/yy");
// Returns, e.g., 6/09/07
于 2012-05-03T11:31:43.233 に答える