日付の書式変換についてNo.05056
e-pet さん 06/02/12 18:23
 
皆さん、こんにちは。

下記のようなマクロがほしいと思っているのですが、
これから勉強したのでは、完成するのが何時になるか
わかりません(^^;
そこで、皆さんにご指導をお願いしたいと思っております。

-----
文章中にある、例えば、

日付:   2005年04月19日 火曜日 04:20PM

という行を検索し、その行の前に

Date:  Tue, 19 Apr 2005 16:20:00 +0900

という書式で行を挿入するマクロです。
-----

どなたか、ご指導をよろしくお願い致します。

[ ]
RE:05056 日付の書式変換についてNo.05057
h-tom さん 06/02/13 00:14
 

h-tom です。

>-----
>文章中にある、例えば、
>
>日付:   2005年04月19日 火曜日 04:20PM
>
>という行を検索し、その行の前に
>
>Date:  Tue, 19 Apr 2005 16:20:00 +0900
>
>という書式で行を挿入するマクロです。
>-----
>どなたか、ご指導をよろしくお願い致します。
手順としては、
1)"日付:〜"の検索 searchdown文+正規表現 かな?
2)見つかったら年月日等を、どうにかして切り出す。
 ・変数に取り込んで、midstrを使う
 ・gettextを使う
 ・検索を使う
3)月、曜日、時間を変更し、追加する文字列を作成
4)1)で見つかった位置に改行を追加して挿入
という感じですかね。

ところで、何処までわかっていて、何がわからないのでしょうか?

[ ]
RE:05056 日付の書式変換についてNo.05058
ENCODINGSHIFTJIS さん 06/02/13 12:00
 
エディターは文字列は操作できても、それが表現する意味までは
感知しませんから、適当なライブラリを探して

文字列 → DateTime オブジェクト → 文字列表現

の形になります。

============= 参考 MSH を使う場合

MSH > [DATETIME]$DT=" 2005年04月19日 04:20PM" ; [STRING]$DT.DAYOFWEEK+$DT.TO
STRING(", d M yyyy HH:mm:ss '+900'")
 ↑ 一行です。

Tuesday, 19 4 2005 16:20:00 +900
程度はできます。
Parse や locale を使う方法は、未学習ですが。

[ ]
RE:05058 日付の書式変換についてNo.05060
e-pet さん 06/02/13 21:46
 
h-tomさん、ENCODINGSHIFTJISさん、コメントありがとうございます。
私の作るマクロは、キー操作を記録して、それを少し改変する程度の
ものです。ですから、正規表現もよく分かりません。

教えて頂いたことを参考にして(十分に理解できていませんが)、
もう少し自分で勉強してから、またお尋ねしたいと思います。
どうもありがとうございました。

[ ]
RE:05060 日付の書式変換についてNo.05061
ENCODINGSHIFTJIS さん 06/02/13 22:47
 
>私の作るマクロは、キー操作を記録して、それを少し改変する程度の
>ものです。ですから、正規表現もよく分かりません。

キー記録で十分です、曜日、月名、時刻の置換はコピーで増やすだけ

頭出しサーチ ^日付:

行の選択
選択内置換
検索 ([0-9]+)年([0-9]+)月([0-9]+)日 (.+?) ([0-9]+):([0-9]+)(.+?)$
置換 \4, \3 m\2 \1 \7\5:\6:00 +0900

行の選択
選択内置換
検索 火曜日
置換 Tue

行の選択
選択内置換
検索 m04
置換 Apr

行の選択
選択内置換
検索 PM04
置換 16
---------------

置換しやすいように m を触媒に付けておく。
エディター操作ポイ ものです

[ ]
RE:05060 日付の書式変換についてNo.05062
山紫水明 さん 06/02/14 20:14
 
 e-petさん,こんばんは。

とりあえず次のマクロを作ってみました。
遅すぎたかも知れませんが,
なお,秀丸エディタは Ver5.00 以上が必要だと思います。
//------------------------------------------------------------------//
$yous="日 月 火 水 木 金 土";
$week = "SunMonTueWedThuFriSat";
$tuki = "01 02 03 04 05 06 07 08 09 10 11 12";
$mons = "JanFebMarAprMayJunJulAugSepOctNovDec";
disabledraw;
gofiletop;
while( 1 ) {
    searchdown "[0-9]+年[0-9]{2}月[0-9]{2}日 .曜日 [0-9]{2}:[0-9]{2}[AP]M",
         regular;
    if( !result ) break;
    $s = gettext( foundtopx, foundtopy, foundendx, foundendy );
    $year = leftstr( $s, 4 );
    $month = midstr( $s, 6, 2 );
    $day = midstr( $s, 10, 2 );
    $you = midstr( $s, 15, 2 );
    $hour = midstr( $s, 22, 2 );
    $minute = midstr( $s, 25, 2 );
    $ap = midstr( $s, 27, 2 );
    $wd = midstr( $week, strstr( $yous, $you ) ,3 );
    $mon = midstr( $mons, strstr( $tuki, $month ) ,3 );
    if( $ap == "PM" ) $hour = str( val( $hour ) +12 );
    $date = $wd + ", " + $day + " " + $mon + " " + $year
        + " " + $hour + ":" + $minute + ":00 +0900";
    golinetop2;
    insert "Date:  " + $date + "\n";
    golineend2;
}
endmacro;
//------------------------------------------------------------------//

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:05061 日付の書式変換についてNo.05063
e-pet さん 06/02/15 00:44
 
ENCODINGSHIFTJISさん、コメントありがとうございます。
マクロの勉強の際に、参考にさせて頂きます。
どうもありがとうございました。

[ ]
RE:05062 日付の書式変換についてNo.05064
e-pet さん 06/02/15 00:50
 
山紫水明さん、こんばんは。

>とりあえず次のマクロを作ってみました。
>遅すぎたかも知れませんが,
>なお,秀丸エディタは Ver5.00 以上が必要だと思います。

早速、マクロを作って頂き、ありがとうございました。
希望どおりの結果が得られました。
内容はよく理解できませんが、これから勉強させて頂きます。
どうもありがとうございました m(_ _)m

[ ]