C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.55339 の関連記事表示

<< 0 >>
■55339  時間計算
□投稿者/ きのぼう -(2010/11/27(Sat) 17:01:01)

    分類:[.NET 全般] 

    VB2010を全く学習したことがないので急にですがお願いします。

    整数を入力したら0時0分からその整数秒進んだ時刻を文字列として返す関数を作るとしたら
    どんなソースになるのでしょうか?
    <例>
    3600と入力したら1:0:0と返す
    5436と入力したら1:30:36と返す

    このような関数です。

    VBはほとんどわからないので解説等つけてもらえるとありがたいです。
    いきなりですがよろしくお願いします。
親記事 /過去ログ92より / 関連記事表示
削除チェック/

■55341  Re[1]: 時間計算
□投稿者/ 魔界の仮面弁士 -(2010/11/27(Sat) 17:15:31)
    No55339 (きのぼう さん) に返信
    > 整数を入力したら0時0分からその整数秒進んだ時刻を
    > どんなソースになるのでしょうか?
    (案1) DateTime 型/TimeSpan 型を用いる。
    (案2) 除算して計算で求める。

    計算方法は分かりますよね?
    (VB として記述する前に、計算手順を人に説明できますか?)


    > 文字列として返す関数を作るとしたら
    計算で求まった「数値」を、「数字」すなわち文字列にする方法は分かりますか?


    > 3600と入力したら1:0:0と返す
    > 5436と入力したら1:30:36と返す
    3600→1:0:0 とか
    3600→1:00:00 とかではなく、
    3600→1:0:0なのですね?

    半角文字を全角文字に変換するには、StrConv 関数を利用できます。
    http://park5.wakwak.com/~weblab/refStrConv.html
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55342  Re[2]: 時間計算
□投稿者/ きのぼう -(2010/11/27(Sat) 17:31:13)
    解答ありがとうございます

    > (案1) DateTime 型/TimeSpan 型を用いる。
    > (案2) 除算して計算で求める。
    > 計算方法は分かりますよね?
    > (VB として記述する前に、計算手順を人に説明できますか?)
    自分は案2で求めようと思っておりました。計算方法はわかります


    > 計算で求まった「数値」を、「数字」すなわち文字列にする方法は分かりますか?
    すみません。わかりません


    > 3600→1:0:0 とか
    > 3600→1:00:00 とかではなく、
    > 3600→1:0:0なのですね?
    これも半角のままです。
    全角になっていて申し訳ありません。
    数値3つを間に:を入れて文字列にするにはどうすれば良いのでしょうか?
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55343  Re[3]: 時間計算
□投稿者/ 魔界の仮面弁士 -(2010/11/27(Sat) 17:50:01)
    No55342 (きのぼう さん) に返信
    > 解答ありがとうございます
    回答はしますが、
    解答は出しませんよ。

    # といいつつ、某掲示板にあった同内容の質問に、
    # 解答ソースを投稿していたりします。半年前に。


    >>(案2) 除算して計算で求める。
    > 自分は案2で求めようと思っておりました。計算方法はわかります
    商を求めるには、「\ 演算子」を使います。
    a = 7 \ 3 とすれば、a は 2 になります。

    余りを求めるには、「Mod 演算子」を使います。
    a = 7 Mod 3 とすれば、a は 1 になります。


    >>計算で求まった「数値」を、「数字」すなわち文字列にする方法は分かりますか?
    > すみません。わかりません
    数字を文字列に変換する方法は幾つかありますが、たとえば以下のような物があります。
    ・CStr関数
    ・ToString メソッド
    ・String.Format メソッド
    ・Format 関数
    ・FormatNumber 関数


    > 数値3つを間に:を入れて文字列にするにはどうすれば良いのでしょうか?
    「数字」3つ繋げて作る場合には、
     s = s1 & ":" & s2 & ":" & s3
    のように、「& 演算子」を作って連結すれば OK です。

    また、String.Format というメソッドを使う事で、
    「数値」3つを今回求める文字列形式に変換する事もできます。
    書式指定の構文を指定する事になるので、少々慣れが必要ですけれどね。
    http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=9905&mode=msgview
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55344  Re[4]: 時間計算
□投稿者/ きのぼう -(2010/11/27(Sat) 17:58:29)
    本当に細かくありがとうございます。

    Statement is not valid in a namespace.

    コンパイルしたら上記のエラーが出たのですが
    これは関数の宣言が違うということだと思うのですがどこが違うのか分かりません。。。
    自分が書いた宣言です。
    Private Function time(a As Integer)As String

    エラー文すら勘違いしていたらすみません。
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55345  Re[5]: 時間計算
□投稿者/ 魔界の仮面弁士 -(2010/11/27(Sat) 18:16:12)
    No55344 (きのぼう さん) に返信
    > Statement is not valid in a namespace.
    英語版をお使いですか?

    日本語版であれば、このエラー(コンパイルエラーBC30001)は、
     『名前空間のステートメントが無効です。』
    というメッセージになるはずなのですが。


    > これは関数の宣言が違うということだと思うのですがどこが違うのか分かりません。。。
    宣言する場所が間違っているようですね。
    Function を記述する場所は、
     ・「Class クラス名」〜「End Class」ブロックの中
     ・「Structure クラス名」〜「End Structure」ブロックの中
     ・「Module モジュール名」〜「End Module」ブロックの中
    のいずれかでなければいけません。

    これらのブロックの外に記述したり、「Namespace 名前空間」〜「End Namespace」の中に
    記述しようとすると、今回のコンパイルエラーが発生します。
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55347  Re[6]: 時間計算
□投稿者/ きのぼう -(2010/11/27(Sat) 18:58:44)
    何から何までありがとうございます。

    おかげでようやく作ることが出来ました!
    本当にありがとうございます。
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55350  Re[1]: 時間計算
□投稿者/ 渋木宏明 -(2010/11/27(Sat) 19:19:15)
>
    > 整数を入力したら0時0分からその整数秒進んだ時刻を文字列として返す関数を作るとしたら
    > どんなソースになるのでしょうか?
    > <例>
    > 3600と入力したら1:0:0と返す
    > 5436と入力したら1:30:36と返す

    それぞれ

    DateTime.AddSeconds(3600).ToString()
    DateTime.AddSeconds(5436).ToString()

    とか。(C# ですが)
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55351  Re[2]: 時間計算
□投稿者/ 魔界の仮面弁士 -(2010/11/27(Sat) 19:34:37)
    2010/11/27(Sat) 19:39:36 編集(投稿者)

    No55350 (渋木宏明 さん) に返信
    >>整数を入力したら0時0分からその整数秒進んだ時刻を文字列として返す関数を作るとしたら
    >>どんなソースになるのでしょうか?
    > DateTime.AddSeconds(3600).ToString()
    > DateTime.AddSeconds(5436).ToString()
    地域設定にもよりますが、ToString() を使うと、
     "0001/01/01 1:00:00"
     "2010/11/27 1:00:00"
    といった表記になってしまうかと思います。

    DateTime 型を使うなら、
     s = DateTime.MinValue.AddSeconds(3600).ToLongTimeString() '1:00:00
     s = DateTime.MinValue.AddSeconds(5436).ToLongTimeString() '1:30:36
    あるいは、
     s = DateTime.MinValue.AddSeconds(3600).ToString("H:m:s") '1:0:0
     s = DateTime.MinValue.AddSeconds(5436).ToString("H:m:s") '1:30:36
    あるいは、
     s = DateTime.MinValue.AddSeconds(3600).ToString("H:mm:ss") '1:00:00
     s = DateTime.MinValue.AddSeconds(5436).ToString("H:mm:ss") '1:30:36
    ではないでしょうか?


    なお、時刻ではなく時間なら、
     s = TimeSpan.FromSeconds(3600).ToString() '01:00:00
     s = TimeSpan.FromSeconds(5436).ToString() '01:30:36
    ですね。

    TimeSpan を使った場合には、24時間以上の値(たとえば 90000 秒後)を
    指定した場合の扱いが異なります。


    >>> (案1) DateTime 型/TimeSpan 型を用いる。
記事No.55339 のレス /過去ログ92より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -