![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
変換前
"2007-11"
"2008"
"2009-12-1"
"2009-12-12"
"2007-11 11:59"
"2007-11 11:59:12"
"2007-11 11"
上記のような日付の文字列を指定したフォーマットで出力したいです。
もっとも効率の良いやり方を教えて下さい。
変換後
"20071100000000"
"20080000000000"
"20091201000000"
"20091212000000"
"20071100115900"
"20071100115912"
"20071100110000"
A 回答 (3件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.3
- 回答日時:
一行になりました。
#正規表現を使うので、効率(速度)は悪いと思います。
function hoge($str) {
return preg_replace('/^(\d+)(-(\d+))?(-(\d+))?( (\d+))?(:(\d+))?(:(\d+))?$/e', 'sprintf("%04d%02d%02d%02d%02d%02d", "$1","$3","$5","$7","$9","$11")', $str);
}
No.2
- 回答日時:
「もっとも」効率がよいかどうかわかりませんが…。
<?php
$date_array = array("2007-11","2008","2009-12-1","2009-12-12","2007-11 11:59","2007-11 11:59:12","2007-11 11");
foreach($date_array as $val) {
echo convert_datetime_format($val) . "<br />";
}
function convert_datetime_format($date_time_str) {
$date_time = split(" ",$date_time_str);
$ymd = split("-",$date_time[0]);
while (count($ymd) < 3) array_push($ymd,0);
if (count($date_time) == 1) {
$hms = array(0,0,0);
} else {
$hms = split(":",$date_time[1]);
while (count($hms) < 3) array_push($hms,0);
}
$str = sprintf("%04d%02d%02d%02d%02d%02d",$ymd[0],$ymd[1],$ymd[2],$hms[0],$hms[1],$hms[2]);
return $str;
}
?>
回答ありがとうございます。
正規表現で1行で書けないかなと思ってまして、"2007-11 11:59"がなかなかうまくいかず・・・。
うまくいってませんが、途中経過です。
sprintf("%-014s",ereg_replace("^([0-9]+)-?(0?[0-9]*)-?(0?[0-9]*) ?(0?[0-9]*):?(0?[0-9]*):?(0?[0-9]*)","\\1\\2\\3\\4\\5\\6",$s));
No.1
- 回答日時:
たとえばこんな感じでしょうか?
<?PHP
$str="2007-11";
print change($str)."<br>";
$str="2008";
print change($str)."<br>";
$str="2009-12-01";
print change($str)."<br>";
$str="2009-12-12";
print change($str)."<br>";
$str="2007-11 11:59";
print change($str)."<br>";
$str="2007-11 11:59:12";
print change($str)."<br>";
$str="2007-11 11";
print change($str)."<br>";
function change($str){
list($date,$time)=split(" ",$str);
list($year,$month,$day)=split("-",$date);
list($hour,$minute,$second)=split(":",$time);
$month =substr("00".$month,-2);
$day =substr("00".$day,-2);
$hour =substr("00".$hour,-2);
$minute =substr("00".$minute,-2);
$second =substr("00".$second,-2);
$str=$year.$month.$day.$hour.$minute.$second;
return $str;
}
?>
回答ありがとうございます。
正規表現で1行で書けないかなと思ってまして、"2007-11 11:59"がなかなかうまくいかず・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaで質問です。 文字列2023/2/3(一桁の場合、0埋めなし)の場合にyyyyMMddに変換 3 2023/02/20 11:30
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) EXCEL 和暦を西暦に変換する方法について 4 2023/03/02 20:57
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Ruby power BI クエリエディター 〇〇を含む文字列置換 1 2022/10/16 17:34
- Excel(エクセル) Excelの1つのセルにそれぞれ文字+数字が入力されていて、 数字のみ抽出して合計したいです。(合計 4 2023/03/16 23:44
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名に日付の挿入
-
開始と終了を指定して、その間...
-
substrの使い方について教えて...
-
C言語でシステム日付との差を...
-
Accessで、DAOでAddnew
-
ASP 年度年齢の計算
-
ASPでの日付の取得について
-
日付計算について
-
RSSブロガーの日時表示について
-
経過期間計算がうまくいかない
-
コマンドプロンプト 日時を用...
-
PHPでn日後を計算したい
-
前月の取得について
-
現在時刻をyyyymmddhhmmss形式...
-
6ヶ月前の日付を取得するにはど...
-
phpで○○○○年○月○日というデータ...
-
C言語を使って、ある特定の日の...
-
md5について
-
日付によって表示が切り替えら...
-
PHPでmysqlを使ってます。日時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
昨日の日付を取得するVBscript
-
ファイル名に日付の挿入
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
C言語でシステム日付との差を...
-
昨日の日付名でファイルを作成...
-
現在時刻をyyyymmddhhmmss形式...
-
今日の日付から1週間のリスト
-
PHP 指定した期間だけ表示した...
-
差分の月数を算出する方法
-
日付によって画像を変える
-
プルダウンメニューの値をDBに...
-
MYSQLの日付から現在までの年数...
-
月曜日から始まる週間カレンダ...
-
Java Scriptで、ある日付に加算...
-
PHPでn日後を計算したい
-
MS-DOSコマンドのリダイ...
-
日付が変わるとカウントアップ
-
改行されないカレンダー(PHP)
おすすめ情報