Google Apps Scriptを使用しています。ユーザーにパターンを入力してもらいたい MM/DD/YYYY hh:mm:ss
パターンと文字列を一致させて情報を抽出する
パターンによると、文字列から情報を抽出したいと思います。文字列は02/29/2016 07:00:00 PM EST
です。このタイムスタンプ文字列から、ユーザーが指定したパターンを使用して、日付、月、年、時、分、秒を抽出したいと思います。
これはJavaScriptでどのように実現できますか?
Google Apps Scriptを使用しています。ユーザーにパターンを入力してもらいたい MM/DD/YYYY hh:mm:ss
パターンと文字列を一致させて情報を抽出する
パターンによると、文字列から情報を抽出したいと思います。文字列は02/29/2016 07:00:00 PM EST
です。このタイムスタンプ文字列から、ユーザーが指定したパターンを使用して、日付、月、年、時、分、秒を抽出したいと思います。
これはJavaScriptでどのように実現できますか?
この正規表現は動作します(ただし、ユーザーが入力した値が有効であるかどうかをチェックしません)
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+)
JSコードを
これを試してみてください:
グループ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
に制限秒は、あなたが(グーグルでスクリプトをアプリ)この例を試すことができます:
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機能で配列に結果を置くことができるような他の可能性のために
@Mr_Greenおかげでそれを適応させることができますが、私の質問を取得できませんでした。タイムスタンプは、新しいDate()で認識されないような形式になることがありますので、新しいDate()を使用したくありません。 –
@HariDasこのような形式の例はありますか?まだ私は、フォーマットを修正し、 'new Date()'だけを使う無効なフォーマットを作るべきだと思います。 –
@Mr_Green新しい日付( "02/29/2016 07:00:00 EST")。getMinutes()は30(おそらくタイムゾーンのため)を返します。 –