2016-04-19 13 views
-1

Google Apps Scriptを使用しています。ユーザーにパターンを入力してもらいたい MM/DD/YYYY hh:mm:ssパターンと文字列を一致させて情報を抽出する

パターンによると、文字列から情報を抽出したいと思います。文字列は02/29/2016 07:00:00 PM ESTです。このタイムスタンプ文字列から、ユーザーが指定したパターンを使用して、日付、月、年、時、分、秒を抽出したいと思います。

これはJavaScriptでどのように実現できますか?

+0

@Mr_Greenおかげでそれを適応させることができますが、私の質問を取得できませんでした。タイムスタンプは、新しいDate()で認識されないような形式になることがありますので、新しいDate()を使用したくありません。 –

+0

@HariDasこのような形式の例はありますか?まだ私は、フォーマットを修正し、 'new Date()'だけを使う無効なフォーマットを作るべきだと思います。 –

+0

@Mr_Green新しい日付( "02/29/2016 07:00:00 EST")。getMinutes()は30(おそらくタイムゾーンのため)を返します。 –

答えて

0

この正規表現は動作します(ただし、ユーザーが入力した値が有効であるかどうかをチェックしません)

var re = /(\d+)\/(\d+)\/(\d+)\s+(\d+):(\d+):(\d+)/; 
 
var str = '02/29/2016 07:00:00 PM EST'; 
 

 
var result = str.match(re); 
 
document.writeln(result[1] + '<br>'); 
 
document.writeln(result[2] + '<br>'); 
 
document.writeln(result[3] + '<br>'); 
 
document.writeln(result[4] + '<br>'); 
 
document.writeln(result[5] + '<br>'); 
 
document.writeln(result[6] + '<br>');

(\d+)\/(\d+)\/(\d+)\s+(\d+):(\d+):(\d+) 

Regex Demo

JSコードを

Ideone Demo

0

これを試してみてください:
グループ1:0からグループ2 12
に制限ヶ月間、:

/^(0?\d|1[0-2])\/([0-2]?\d|3[01])\/(\d{1,4})\s([01]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)$/ 

私は入力に私にできる最も制限日数、 0〜31に制限されます
グループ3:年数は4文字に制限されます

グループ4:0からグループ5 23
に制限時間:0からグループ6 59
に限ら分、0から59

1

に制限秒は、あなたが(グーグルでスクリプトをアプリ)この例を試すことができます:

var a = extractDateTimeInfo('MM/DD/YYYY hh:mm:ss', '02/29/2016 07:10:14 PM EST'); 
Logger.log(a); //output: Year: 2016, month: 02, date: 29, hours: 07, min: 10, sec: 14 

var b = extractDateTimeInfo('YYYY-MM-DD hh:mm', '2016-12-26 16:13 PM EST'); 
Logger.log(b); //output: Year: 2016, month: 12, date: 26, hours: 16, min: 13, sec: 


function extractDateTimeInfo(patt, t) { 
    var YYYYPos = patt.indexOf('YYYY'); 
    var MMPos = patt.indexOf('MM'); 
    var DDPos = patt.indexOf('DD'); 
    var hhPos = patt.indexOf('hh'); 
    var mmPos = patt.indexOf('mm'); 
    var ssPos = patt.indexOf('ss'); 

    var YYYY = YYYYPos >= 0 ? t.substr(YYYYPos, 4) : ''; 
    var MM = MMPos >= 0 ? t.substr(MMPos, 2) : ''; 
    var DD = DDPos >= 0 ? t.substr(DDPos, 2) : ''; 
    var hh = hhPos >= 0 ? t.substr(hhPos, 2) : ''; 
    var mm = mmPos >= 0 ? t.substr(mmPos, 2) : ''; 
    var ss = ssPos >= 0 ? t.substr(ssPos, 2) : ''; 
    return Utilities.formatString("Year: %s, month: %s, date: %s, hours: %s, min: %s, sec: %s", YYYY, MM, DD, hh, mm, ss); 
} 

しかし、私はあなたが期待しているどのようなパターンのパターンがわかりません。しかし、あなたは答えるために...などYY

あなたにもextractDateTimeInfo機能で配列に結果を置くことができるような他の可能性のために

関連する問題