時間の扱いについて への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 rs000008  () 投稿日時 2008/8/26 15:44:00
魔界の仮面弁士さん、るしぇさん 
 
ありがとうございました。 
 
Form内でAddDays(1)をしようとしていました…。 
申し訳ありませんでしたm(_ _)m
投稿者 るしぇ  () 投稿日時 2008/8/21 22:04:00
>>9 
デジャブを感じて検索したら、 
>428. tetデータの読み込み・メッセージ表示 
http://rucio.bbs.coocan.jp/?m=listthread&t_id=428&summary=on 
rs000008 さんは AddDays 知ってるよね。
投稿者 魔界の仮面弁士  () 投稿日時 2008/8/21 06:14:00
>>8 
インバリアントな CultureInfo を指定しているためです。 
 
日本語で表現したいのであれば、 
CultureInfo.InvariantCulture ではなく、 
New CultureInfo("ja-JP") を指定してみてください。
投稿者 るしぇ  () 投稿日時 2008/8/21 06:02:00
>日曜日ではなくSundayが出てきます。  
>日曜日を出すにはどのようにすればいいでしょうか?  
CultureInfo.CurrentCulture 
 
>一日足した日を出すにはどのようにすればいいで  
>しょうか?  
dt.AddDays(1) 
 
最初の質問は CultureInfo を理解してないと分からないけど、 
[CultureInfo メンバ] 
http://msdn.microsoft.com/ja-jp/library/system.globalization.cultureinfo_members(VS.80).aspx 
 
日付操作に関しては日付型のメンバに操作関数が一式 
そろってるわけですし、 
[DateTime メンバ] 
http://msdn.microsoft.com/ja-jp/library/system.datetime_members(VS.80).aspx 
サンプルもあります。 
http://homepage1.nifty.com/rucio/main/dotnet/Samples/dnSampleDateAdd.htm 
自分で調べるようにしてください。
投稿者 rs000008  () 投稿日時 2008/8/21 03:59:00
>>7 
Imports System  
Imports System.Runtime.CompilerServices  
Imports System.Globalization  
 
Module Sample  
 Public Sub Main()  
  Dim dt As Date  
 
  Console.WriteLine(Now.To28HourString())  
 
  dt = #12/31/2008 03:59:59#  
  Console.WriteLine(dt.To28HourString())  
 
  dt = #12/31/2008 04:00:00#  
  Console.WriteLine(dt.To28HourString())  
 End Sub  
 
 
 <Extension()> _  
 Public Function To28HourString( _  
  ByVal dt As Date) As String  
  Return ToDiffHourString(dt, 4)  
 End Function  
 
 <Extension()> _  
 Private Function ToDiffHourString( _  
  ByVal dt As Date, ByVal DiffHour As Byte) As String  
  Return String.Format( _  
   CultureInfo.InvariantCulture, _  
   "{0:dddd}", _  
   dt - New TimeSpan(DiffHour, 0, 0), _  
   If(dt.Hour >= DiffHour, dt.Hour, dt.Hour + 24))  
 End Function  
End Module  
 
 
yyyy\/MM\/ddの所をddddと変更し、曜日を取り出そう 
とした所、日曜日ではなくSundayが出てきます。 
日曜日を出すにはどのようにすればいいでしょうか? 
 
後、一日足した日を出すにはどのようにすればいいで 
しょうか? 
上記のModule内で変更して可能でしたら、教えていた 
だけたらと思います。 
よろしくお願いしますm(_ _)m
投稿者 rs000008  () 投稿日時 2008/7/27 20:56:00
(Module側) 
Module Module1 
    Public Sub Main() 
        Dim dt As Date 
 
        Console.WriteLine(Now.To28HourString()) 
 
        'dt = #12/31/2008 3:59:59 AM# 
        dt = #3:59:59 AM# 
        Console.WriteLine(dt.To28HourString()) 
 
        'dt = #12/31/2008 4:00:00 AM# 
        dt = #4:00:00 AM# 
        Console.WriteLine(dt.To28HourString()) 
    End Sub 
 
 
    <Extension()> _ 
    Public Function To28HourString( _ 
     ByVal dt As Date) As String 
        Return ToDiffHourString(dt, 4) 
    End Function 
 
    <Extension()> _ 
    Private Function ToDiffHourString( _ 
     ByVal dt As Date, ByVal DiffHour As Byte) As String 
        Return String.Format( _ 
         CultureInfo.InvariantCulture, _ 
         "{1:00}:{0:mm}", _ 
         dt - New TimeSpan(DiffHour, 0, 0), _ 
         If(dt.Hour >= DiffHour, dt.Hour, dt.Hour + 24)) 
    End Function 
End Module 
 
(Form側) 
nowTime = Format(Module1.To28HourString(Now)) 
 
とする事でうまくいきました。 
皆さん、本当にありがとうございましたm(__)m
投稿者 rs000008  () 投稿日時 2008/7/26 02:42:00
 
dt等宣言が必要なのかと思いましたが、勘違い 
していました。 
すみませんでしたm(__)m 
 
Dim nowTime As String 
nowTime = Format(Now, "HH:mm") 
上記のようにNowからHH:mmを取り出していました。 
 
教えていただいたModuleを使い、 
Dim nowTime As String 
nowTime = Format(Sample.To28HourString(Now), "HH:mm") 
としてHH:mmを取り出そうと思いましたが、文字列HH:mm 
が入ってしまいます。 
 
どのようにSample.To28HourString(Now)からHH:mmを取り出したらいいでしょうか? 
教えていただけると助かります。 
よろしくお願いしますm(__)m
投稿者 るしぇ  () 投稿日時 2008/7/24 19:17:00
ついでに拡張メソッドについての分かり易いと思う説明を見つけましたので 
リンクしておきます。 
http://d.hatena.ne.jp/nacookan/searchdiary?word=*%5BVB%5D 
 
Extension 属性はでないと使えないのでボクは使いません。 
# まだまだの出番が無い現場で仕事してるので使えない。 
これから勉強していく人は覚えていった方がいいのかなぁ。。。 
 
まぁ、新しい方法なので自分で調べる必要がありますってのと、 
古いバージョンだとまた違う書き方になりますってのだけ覚えて 
おいてください。
投稿者 るしぇ  () 投稿日時 2008/7/24 18:37:00
>>3 
>Form側でもdt等宣言が必要なのでしょうか?  
どの dt でしょうか?引数? 
>Nowと同じように使えるようになるのでしょうか?  
関数自体は使えますよね? 
Now 関数は現在の時刻なのでパラメータで何か指定する 
必要はありませんが、“ある日付”を4時間ずらすので 
あれば、どの時間を4時間ずらすのか引数で指定する 
必要があるのでは? 
 
つねに現在の時刻の4時間後を取得する関数にでもする 
なら、引数を省略する形に出来るのでしょうが、今度は 
計算結果の日付を4時間ずらそうとしてもできないという 
事態が発生します。 
 
関数の目的を考えて、それにあわせた使い方をしてください。 
もしくは目的に応じて関数の形を修正してください。
投稿者 rs000008  () 投稿日時 2008/7/24 11:08:00
 
Moduleファイルを作成し、魔界の仮面弁士さんから 
教えていただいたコードを入れました。 
 
プロジェクト内のすべてのフォームでこのModuleは 
参照できると思いますが、 
Form側でもdt等宣言が必要なのでしょうか? 
Nowと同じように使えるようになるのでしょうか? 
 
すみませんが教えていただけたらと思います。 
 
※VB2008を使っています。
投稿者 rs000008  () 投稿日時 2008/6/8 00:51:00
全て表示