時間の扱いについて
投稿者 rs000008  ()
投稿日時
2008/6/8 00:51:00
全て表示
投稿者 rs000008  ()
投稿日時
2008/7/24 11:08:00
Moduleファイルを作成し、魔界の仮面弁士さんから
教えていただいたコードを入れました。
プロジェクト内のすべてのフォームでこのModuleは
参照できると思いますが、
Form側でもdt等宣言が必要なのでしょうか?
Nowと同じように使えるようになるのでしょうか?
すみませんが教えていただけたらと思います。
※VB2008を使っています。
投稿者 るしぇ  ()
投稿日時
2008/7/24 18:37:00
>>3
>Form側でもdt等宣言が必要なのでしょうか?
どの dt でしょうか?引数?
>Nowと同じように使えるようになるのでしょうか?
関数自体は使えますよね?
Now 関数は現在の時刻なのでパラメータで何か指定する
必要はありませんが、“ある日付”を4時間ずらすので
あれば、どの時間を4時間ずらすのか引数で指定する
必要があるのでは?
つねに現在の時刻の4時間後を取得する関数にでもする
なら、引数を省略する形に出来るのでしょうが、今度は
計算結果の日付を4時間ずらそうとしてもできないという
事態が発生します。
関数の目的を考えて、それにあわせた使い方をしてください。
もしくは目的に応じて関数の形を修正してください。
>Form側でもdt等宣言が必要なのでしょうか?
どの dt でしょうか?引数?
>Nowと同じように使えるようになるのでしょうか?
関数自体は使えますよね?
Now 関数は現在の時刻なのでパラメータで何か指定する
必要はありませんが、“ある日付”を4時間ずらすので
あれば、どの時間を4時間ずらすのか引数で指定する
必要があるのでは?
つねに現在の時刻の4時間後を取得する関数にでもする
なら、引数を省略する形に出来るのでしょうが、今度は
計算結果の日付を4時間ずらそうとしてもできないという
事態が発生します。
関数の目的を考えて、それにあわせた使い方をしてください。
もしくは目的に応じて関数の形を修正してください。
投稿者 るしぇ  ()
投稿日時
2008/7/24 19:17:00
ついでに拡張メソッドについての分かり易いと思う説明を見つけましたので
リンクしておきます。
http://d.hatena.ne.jp/nacookan/searchdiary?word=*%5BVB%5D
Extension 属性はでないと使えないのでボクは使いません。
# まだまだの出番が無い現場で仕事してるので使えない。
これから勉強していく人は覚えていった方がいいのかなぁ。。。
まぁ、新しい方法なので自分で調べる必要がありますってのと、
古いバージョンだとまた違う書き方になりますってのだけ覚えて
おいてください。
リンクしておきます。
http://d.hatena.ne.jp/nacookan/searchdiary?word=*%5BVB%5D
Extension 属性はでないと使えないのでボクは使いません。
# まだまだの出番が無い現場で仕事してるので使えない。
これから勉強していく人は覚えていった方がいいのかなぁ。。。
まぁ、新しい方法なので自分で調べる必要がありますってのと、
古いバージョンだとまた違う書き方になりますってのだけ覚えて
おいてください。
投稿者 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
投稿者 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
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/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
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
投稿者 るしぇ  ()
投稿日時
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
自分で調べるようにしてください。
>日曜日を出すにはどのようにすればいいでしょうか?
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
自分で調べるようにしてください。
投稿者 魔界の仮面弁士  ()
投稿日時
2008/8/21 06:14:00
>>8
インバリアントな CultureInfo を指定しているためです。
日本語で表現したいのであれば、
CultureInfo.InvariantCulture ではなく、
New CultureInfo("ja-JP") を指定してみてください。
インバリアントな CultureInfo を指定しているためです。
日本語で表現したいのであれば、
CultureInfo.InvariantCulture ではなく、
New CultureInfo("ja-JP") を指定してみてください。
投稿者 るしぇ  ()
投稿日時
2008/8/21 22:04:00
>>9
デジャブを感じて検索したら、
>428. tetデータの読み込み・メッセージ表示
http://rucio.bbs.coocan.jp/?m=listthread&t_id=428&summary=on
rs000008 さんは AddDays 知ってるよね。
デジャブを感じて検索したら、
>428. tetデータの読み込み・メッセージ表示
http://rucio.bbs.coocan.jp/?m=listthread&t_id=428&summary=on
rs000008 さんは AddDays 知ってるよね。
投稿者 rs000008  ()
投稿日時
2008/8/26 15:44:00
魔界の仮面弁士さん、るしぇさん
ありがとうございました。
Form内でAddDays(1)をしようとしていました…。
申し訳ありませんでしたm(_ _)m
ありがとうございました。
Form内でAddDays(1)をしようとしていました…。
申し訳ありませんでしたm(_ _)m