HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■14963 / inTopicNo.1)  文字列の計算
  
□投稿者/ ギャレット -(2025/05/21(Wed) 16:09:14)
    度々、助けていただいております。

     文字列 14:35
     文字列  0:40
    を足し算して、15:15と表したいのですが、どのような関数を使用すれば
    いいのでしょうか。お教えください。

     桐Ver9-2012使用
引用返信 [メール受信/OFF] 削除キー/
■14964 / inTopicNo.2)  (削除)
□投稿者/ -(2025/05/21(Wed) 16:49:17)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■14965 / inTopicNo.3)  Re[2]: 文字列の計算
□投稿者/ ギャレット -(2025/05/21(Wed) 17:16:42)
    No14964に返信(ONnojiさんの記事)
    > 2025/05/21(Wed) 17:12:30 編集(投稿者)
    >
    >> 文字列 14:35
    >> 文字列  0:40
    >>を足し算して、15:15と表したいのですが、どのような関数を使用すればいいのでしょうか。

    > ちなみに、なぜこんな確認をするのかと言いますと・・・
    > ひょっとして、文字列の "14:35" が、任意の日付の 14時35分 という時刻を表しているのか?


    アドバイス、ありがとうございます。
     任意の日付です。
引用返信 [メール受信/OFF] 削除キー/
■14966 / inTopicNo.4)  (削除)
□投稿者/ -(2025/05/21(Wed) 17:40:40)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■14967 / inTopicNo.5)  Re[4]: 文字列の計算
□投稿者/ ギャレット -(2025/05/22(Thu) 08:21:36)
    No14966に返信(ONnojiさんの記事)
    > 2025/05/21(Wed) 17:42:51 編集(投稿者)
    >
    > 危なかった!。
    > それを早く言ってほしかったなぁ〜〜〜〜〜〜 (ーー;)--------------> ※遠い目線
    > つまり、
    > 文字列の "14:35" は、時刻の 14時35分 を表している
    > 文字列の "0:40" の方は、加算する経過時間 の40分を表している
    >  日時 + 時間 → 日時 ただし、年月日の値は除く
    > ということですね。
    > 求めたい文字列の "15:15" は、15時15分を表しているでよろしいですか??
    > でもねぇ〜、もしも計算結果が 23時59分 を超過したらどうするつもりでしょうか???
    > 計算結果が、日を跨ぐ事は絶対に無いですか???


      いろいろと、ありがとうございます。
      説明不足でした。
      おっしゃるとおり
        日時 + 時間 → 日時 ただし、年月日の値は除く
      日をまたぐことはありません。
    よろしくお願いいたします。
引用返信 [メール受信/OFF] 削除キー/
■14971 / inTopicNo.6)  (削除)
□投稿者/ -(2025/05/22(Thu) 23:13:25)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■14972 / inTopicNo.7)  Re[2]: 文字列の計算
□投稿者/ ジェダイの桐 -(2025/05/23(Fri) 12:42:17)
    ONnojiさん

    こんにちは!


    > 項目番号 項目名  データ型 項目計算式
    > 1     時刻   文字列  
    > 2     加算時間 文字列  
    > 3     累計時間 文字列  #累計時間( [時刻], [加算時間] )

    昨日、自分で テスト.TBX を作って、ここまでは実際に作ったんですよ。
    所が、15時間15分 0秒 って出たんですね。

    ONnojiさんが詳細に質問されていた意味が、この時点で理解出来ました。


    > 4     中間結果 文字列  #文字置換( [累計時間], "時間", ":" )

    これは思いつきました。が分以下をどう処理したらいいかが思いつきませんでした。


    > 5     最終結果 文字列  #sstr( [中間結果], 1, #文字位置( [中間結果], "分") - 1 )


    分かってしまえば、なんて事ないのですが、目からウロコでした(^^ゞ


    環境設定 → 日時型・時間型 → 時間型の形式 → 表示形式 → 298:4:3
    に変更して実験してみました!

    [時刻]  → 15:15
    [加算時間]→ 0:40
    [累積時間]→ 15:15:0
    [中間結果]→ 15:15:0
    [最終結果]→ 1

    最終結果が 1 になりました。
    この理由が分からないんですよねー(T_T)

引用返信 [メール受信/OFF] 削除キー/
■14975 / inTopicNo.8)  (削除)
□投稿者/ -(2025/05/23(Fri) 13:28:24)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■14976 / inTopicNo.9)  Re[3]: コロン文字列の計算
□投稿者/ ジェダイの桐 -(2025/05/23(Fri) 13:56:22)
    ONnojiさん

    こんにちは!


    > ということで、#反転文字列の登場です。


    #反転文字列という関数を初めて認識しました。


    > hh:mm:ss の場合には、#文字位置()関数では、1番めのコロン(:)の位置は判りますが、2めのコロン(:)の位置は判りませんよね。


    確かに、#反転文字列 を使用すればこの問題は解決します!


    > ひっくり返したのですから、最後にはもう一度ひっくり返します。
    > こういうのを、1つの計算式にまとめると、
    > まず、分かり難いでしょ。
    > 次に、絶対間違えるでしょ。
    > 間違えた場合には、どこが間違っているのか探すのが大変でしょ。
    > だから、1つの計算式にまとめないで、順番に石橋を叩いているのですよ。


    最近しみじみ思う事が、分割 というか 可読性 が凄く重要だなと感じています。
    昔の私は何でも一つの式に纏めがちでしたが、式が長くなる or ネストが深くなる
    場合は、極力分割して対応する様にしています。

    そっちの方がメンテナンスがし易いし、何より読みやすい(理解しやすい)からです!

    今回も勉強になりました。
    ありがとうございますm(__)m

    p.s.


    > 後日、詳細を[DOWN LOAD BBS]掲示板にアップしますので、ご感想をお願いいたします。m(__)m


    分かりました!
    お待ちしています(^^ゞ

引用返信 [メール受信/OFF] 削除キー/
■14977 / inTopicNo.10)  (削除)
□投稿者/ -(2025/05/25(Sun) 16:40:14)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■14978 / inTopicNo.11)  Re[2]: 文字列の計算
□投稿者/ うにん -(2025/05/25(Sun) 17:01:42)
http://kiri
    > (例)
    >
    > 文字列に格納されている値の "14:35" は、時刻の 14時35分 を表している
    >
    > 文字列に格納されている値の "0:40" は、加算する経過時間 の40分を表している
    >
    > #累計時間( "14:35", "0:40" ) は、"15時間15分 0秒" である ※環境設定の時間型の [表示形式] の設定の影響を受ける
    >
    >
    >               時の流れのある一瞬の時
    >
    > 00:00           14:35      15:15
    >  ↓             ↓        ↓
    >  ├─────────────┼────────┼───────────────→
    >                └ ←  0:40 → ┘
    >
    >               ある時刻とある時刻の間の長さ
    >

    データ型で考えれば、時刻+時間=時刻ですから、結果の15:15は時間ではありません。
    #累計時間は、「2 つの時間を加算します」なので、1つめの引数も「時刻」ではないです。
    なので、この説明はちょっと変。

    時刻に時間を加算するなら#時間加算の方ですね。
引用返信 [メール受信/OFF] 削除キー/
■14981 / inTopicNo.12)  Re[1]: 文字列の計算
□投稿者/ ONnoji -(2025/05/30(Fri) 22:12:54)
    【転載】時間とは何か 第一話|THE SEIKO MUSEUM GINZA セイコーミュージアム 銀座
    https://museum.seiko.co.jp/knowledge/story_03/

     「時間」という言葉は、一般的には、「時の流れのある一瞬の時刻」、あるいは、「ある時刻とある時刻の間の長さ」の意味で使われています。

    ↑このように、単に時間と言っても[時刻]と[長さ]の二通りある。

    日常では誰も意識せずに使っている「時間」だが、PCの場合には気を付けて区別しないといけない。

    もちろん桐も同様です。

    (例)

    文字列に格納されている値の "14:35" は、時刻の 14時35分 を表している

    文字列に格納されている値の "0:40" は、加算する経過時間 の40分を表している

    #累計時間( "14:35", "0:40" ) は、"15時間15分 0秒" である ※環境設定の時間型の [表示形式] の設定の影響を受ける


                  時の流れのある一瞬の時

    00:00           14:35      15:15
     ↓             ↓        ↓
     ├─────────────┼────────┼───────────────→
                   └ ←  0:40 → ┘

                  ある時刻とある時刻の間の長さ

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    時間型の [表示形式] の設定値は、#環境設定( 20 )で判る。

    戻り値がイチ(2)なら (例)290時間 4分 3秒

    戻り値がナナ(7)なら (例)298: 4: 3

    また、時間型の [表示範囲] の設定値は、#環境設定( 21 )で判る。

    戻り値がサン(3)なら 分まで

    戻り値がサン(4)なら 秒まで

    ということで、#cond( #条件選択の別名 )関数を使えば、状況に合わせて対応できると思いますが、それでは式が複雑になってしまう。
                                                  ・・・・・・・・・・・・・・・
    そこで、一番簡単な方法を次に示します。

     まず、時間型の [表示形式] の設定を、コロン(:)の形式にする

     次に、時間型の [表示範囲] の設定を、分までにする

    これ↑で、#累計時間( "14:35", "0:40" ) の結果は、15:15 になります。

    【結論】

    >  文字列 14:35
    >  文字列  0:40
    > を足し算して、15:15と表したいのですが、どのような関数を使用すればいいのでしょうか。

    計算式は、

     (例)
      項目番号 項目名  データ型 項目計算式
      1     時刻   文字列  
      2     加算時間 文字列  
      3     累計時間 文字列  #累計時間( [時刻], [加算時間] )

    です。(^^ok

    ちなみに、環境設定を確認する必要がありますが、これが一番簡単な方法になります。

    なお、表を再計算すると、設定どおりの表示になります。
       ・・・・・・・・・・・・・・・・・・・・・・

    <追記はじめ>2025-05-26

    #累計時間( "14:35", "0:40" ) は、"15時間15分 0秒" である ※環境設定の時間型の [表示形式] の設定の影響を受ける


                  時の流れのある一瞬の時

    00:00           14:35      15:15
     ↓             ↓        ↓
     ├─────────────┼────────┼───────────────→
     └ ←  14:35     → ┴ ←  0:40 → ┘

                  ある時刻とある時刻の間の長さ

    時間というのは0時間0分0秒を原点として始まるので(ゼロ・オリジン/ゼロ・ベースド)、

    任意の時刻というのは、0時間0分0秒と任意の時刻の間の長さと同じなんですね。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    だから、誤解が発生しないことを期して書けば・・・

      項目番号 項目名     データ型 項目計算式
      1     原点からの時間 文字列  
      2     加算時間    文字列  
      3     累計時間    文字列  #累計時間( [原点からの時間], [加算時間] )

    こう↑なるのだね。

    <追記おわり>

    p.s.

    #cond( #条件選択の別名 )関数を使えば、状況に合わせて対応できると思いますが、それでは式が複雑になってしまいます。

    しかし、そのような必要はまずないでしょう。

    だから、シンプルイズベスト!です。

    従って、添付ファイルはすべて削除しました。

    グッドラック。(@^^)/~~~

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    <参考>

    【一部分を転載】[桐 - ヘルプ]より

    [データと式]→[関数]→[システム]→[#累計時間]

       #環境設定
    --------------------------------------------------------------------------------
    環境設定の設定値を取り出します。

    n  引数
    --------------------------------------------------------------------------------
    20 時間型の [表示形式] の設定値を示す番号を返します(数値)。

      戻り値 設定値

      1    12日間10時 4分 3秒
      2    290時間 4分 3秒
      3    12日
      4    298時間
      5    17884分
      6    1073043秒
      7    298: 4: 3

    21 時間型の [表示範囲] の設定値を示す番号を返します(数値)。

      戻り値 設定値
      1    日まで
      2    時まで
      3    分まで
      4    秒まで


    p.p.s.

    この回答だけ読むと、「なんじゃと大馬鹿も〜ん」に見えちゃうかもしれませんね。

    実際に直後に説明がオカシイと指摘されました。

    それに対する回答にも書きましたが、

    > 【ギャレットさんの今回の質問】
    > 文字列項目[A]に格納されている値の文字列の "14:35" は、時刻の 14時35分 を表している
    > 文字列項目[B]に格納されている値の文字列の "0:40" の方は、加算する経過時間 の40分を表している
    > この二つの項目を使って次の文字列を求めたい
    >  求めたい文字列は "15:15"  ※ただし、24時間制の時刻の15時15分を表しているつもり
                                               ・・・
    > なお、計算結果が日を跨ぐ事は絶対に無いハズだが、 "24:15" や "27:15" になっても構わない。 

    > なお、この計算はあくまでも、時間 + 時間 = 時間 を求めるものです。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    > しかし、求めた結果が都合よいので、そのまま流用したワケです。
         ・・・・・・・・・・・・・・・・・・・・・・・・・
    > もう一度言いますよ、「これは流用ですゾ!」と、お忘れないように願います。

    ↑このように、くどくどと説明していますが、これはあくまでも、つもりなんですよ。
                                  ・・・・・・・・
    表示形式がコロン(:)だったから、流用しているだけなんですよ。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    だって、本当は hh時間mm分ss秒 なのですから、当然です。

    そんなの誰にでも判ると思うでしょけれどねぇ〜。

    でも、初級者には簡単な方がいいのではと思って、クドクド説明した上で、なんちゃっての回答をしているのです。
                                      ・・・・・・・・・・・・・・・・・
    誤解なきように願います。>ALL

    p.p.p.s.

    Win桐では、日時型が追加されたので、DOS桐から存在する[日付文字列]と[時刻文字列]を忘れている人も多いと思います。

    DOS桐のマニュアルの「リファレンス 1」のp137〜142には、「3.3 日付と時刻(時間)」の項があって、

    [時刻文字列]に関しては、時刻と時間を区別しないで扱っています。

    Win桐に慣れていると、日時型(日付+時刻)データや、d"string" i"string" の方にばかりに気を取られますが、

    Win桐でもDOS桐の[日付文字列]と[時刻文字列]は使えるのです。

    もしも、今回の質問がDOS桐の時代にされたなら、

    [時刻文字列]+[時刻文字列]=[時刻文字列]などといった事に違和感をいだく人は居なかったと思います。
     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    かくゆう私( ONnoji )もそのうちの一人!。

    「昭和生まれのDOS桐は遠くになりにけり」かな。(^^ゞ

引用返信 [メール受信/OFF] 削除キー/
■14982 / inTopicNo.13)  Re[1]: 文字列の計算
□投稿者/ 緒方 -(2025/05/30(Fri) 23:28:25)
    chatGptとgeminiに下記の文章を問い合わせてみました
    >
    >  文字列 14:35
    >  文字列  0:40
    > を足し算して、15:15と表したいのですが、どのような関数を使用すれば
    > いいのでしょうか。お教えください。
    >
    >  桐Ver9-2012使用

    AIは非常に詳しく説明します、長いので割愛しますが、面白いですよ
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -