2011-07-23 8 views
1

DateTime文字列の配列が与えられているとします。 10:30:00。 これまでのところ、私はこれを思い付くが、それは文句を言わない私に右の結果与える:すべての文字列が、本当にそのようにしている場合文字列の配列を繰り返して正規表現を実行します

["2011-07-30 10:00:00","2011-07-30 12:00:00"].each{|item| item.match(/\d{2}:\d{2}:\d{2}/)} 

答えて

4

をそしてちょうどいくつかのサブストリングマングリングを行います。

a  = ["2011-07-30 10:00:00","2011-07-30 12:00:00"] 
times = a.map { |e| e[11,8] } 

これもなりますあなたのタイムスタンプに2011-07-30 10:00:00.1123,2011-07-30T10:00:00、または2011-07-30 10:00:00 +0700のようなものが含まれている場合に動作します。

あなたが未来への友好になりたかった場合は、あなたがこれを行うことができますが:

off = '9999-99-99 '.length 
len = '99:99:99'.length 
times = a.map { |e| e[off, len] } 

ので、誰もが118がすべてについて何であったかを推測する必要はないだろう。

+0

は素晴らしい動作です!迅速な返信のためのthx! – daniel

4

Rubyの優れたDateTimeライブラリを使用すると、同じ結果が得られます。

require 'date' 

["2011-07-30 10:00:00","2011-07-30 12:00:00"].map{|item| 
    DateTime.parse(item).strftime("%H:%M:%S") 
} 
=> ["10:00:00", "12:00:00"] 

しかし、muの答えは素晴らしいですが。

+1

+1ルビーDateTimeのlibの使用のために、この答えはホイールを再発明するよりも優れています。 – Arie

関連する問題