0

インポートしている Excel シートがありますが、一部のデータを分単位に変換したいと考えています。フォーマットはさまざまですが、PHP でこれをわずか数分に変換するにはどうすればよいでしょうか5h 5m 6.64s? 6.64sDateTime::createFromFormat()範囲は0から59なので、うまくいかないでしょう。)

また、PHPアプリケーション内で操作およびグラフ化するのがより簡単な形式である分に変換するか、それをPHPクラスの時間オブジェクトに変換する方が良いでしょうか?

データをフォーマットし、MySQL サーバーにインポートしてから、PHP アプリケーションに読み戻して、統計目的でグラフ化する必要があることに注意してください。また、cakePHP フレームワークを使用してアプリを構築しています。フィードバックをお寄せいただきありがとうございます。

4

2 に答える 2

2

すべての時間が hms のような形式である場合 (これらのいずれかはオプションです)、数字を抽出するのはまったく難しくないと思います。これは、次のような単純な正規表現で実行できます。

/(([0-9]{1,2})h)?(([0-9]{1,2})m)?(([0-9]{1,2}\.[0-9]{0,2})s)?/

DateTimeそして、それらの数値を PHP のオブジェクトに入れるだけです。そして、データベースに保存する形式に変換します。

于 2013-01-07T18:29:37.290 に答える
1

文字列のさまざまな部分が常にスペースで区切られている場合は、次のように単純に使用できます。

$timeParts = explode(' ', $timestring); //Separates your time string in parts
//To sum these parts into a total number of minutes:
//First make an array with all multiplication factors to go from part of string to a number of minutes
$factors = array(1/60, 1, 60, 60*24); //Last value is for days, which are probably not necessary.

//Iterate through the $timeParts array
$minutes = 0;  //Create $minutes variable, so we can add minutes to it for each string part
while($part = array_pop($timeParts)) { //Process each part of the string, starting from the end (because seconds will always be there even if minutes aren't)
    $part = floatval($part);   //I guess your numbers will technically be strings, so we need to convert them to floats (because the seconds need to be floats). Also, this function should strip off any letters appended to your numbers.
    $factor = array_shift($factors);  //Take the first part of the $factors array (because in that array the seconds are first, then minutes and so on)
    $minutes += ($part * $factor);  //Multiply the string part by its matching factor and add the result to the $minutes variable.
}

私はこれをテストしていないので、自分でデバッグする必要があります。

于 2013-01-08T12:05:05.883 に答える