web-dev-qa-db-ja.com

VBScriptで現在の日付と時刻をフォーマットする

誰かが私を助けてくれるかどうか疑問に思っていました。

私はASPで非常に新しいです。現在の日付と時刻を次のようにフォーマットしたいと思います。

yyyy-mm-dd hh:mm:ss

しかし、私ができることは次のことだけです

Response.Write Date

誰かが私を助けてくれますか?.

10
BigJobbies

日付のフォーマットオプションはクラシックで制限されていますASPデフォルトでは、サーバーの地域設定に基づいてさまざまな方法で日付をフォーマットできる関数FormatDateTime()があります。

日付時刻関数が組み込まれていますが、日付の書式設定をより詳細に制御します

  • Year(date)-年を表す整数を返します。 Date()を渡すと、現在の年が返されます。

  • Month(date)-年の月を表す1から12までの整数を返します。 Date()を渡すと、現在の月が返されます。

  • MonthName(month[, abbv])-指定された月を示す文字列を返します。月としてMonth(Date())を渡すと、現在の月の文字列が返されます。 @ Marthaによって提案されたとおり

  • Day(date)-月の日を表す1から31までの整数を返します。 Date()を渡すと、月の現在の日が返されます。

  • Hour(time)-0から23までの整数を返し、1日の時間を表します。 Time()を渡すと、現在の時間が返されます。

  • Minute(time)-時間の分を表す0から59までの整数を返します。 Time()を渡すと、現在の分が返されます。

  • Second(time)-秒を表す0から59までの整数を返します。 Time()を渡すと、現在の秒が返されます。

重要:日付/時刻の値をフォーマットする場合、常に日付を格納します/最初に時間値。また、必要な計算DateAdd() etc。)を適用してからフォーマットしようとすると、予期しない結果が得られます。

関数Month()Day()Hour()Minute()およびSecond()はすべて整数を返します。幸いなことに、これらの値をすばやくパディングできる簡単な回避策がありますRight("00" & value, 2)それが行うこと00を値の前に置き、右から最初の2文字を取ります。これにより、すべての1桁の値が0

Dim dd, mm, yy, hh, nn, ss
Dim datevalue, timevalue, dtsnow, dtsvalue

'Store DateTimeStamp once.
dtsnow = Now()

'Individual date components
dd = Right("00" & Day(dtsnow), 2)
mm = Right("00" & Month(dtsnow), 2)
yy = Year(dtsnow)
hh = Right("00" & Hour(dtsnow), 2)
nn = Right("00" & Minute(dtsnow), 2)
ss = Right("00" & Second(dtsnow), 2)

'Build the date string in the format yyyy-mm-dd
datevalue = yy & "-" & mm & "-" & dd
'Build the time string in the format hh:mm:ss
timevalue = hh & ":" & nn & ":" & ss
'Concatenate both together to build the timestamp yyyy-mm-dd hh:mm:ss
dtsvalue = datevalue & " " & timevalue

Call Response.Write(dtsvalue)

注:1回の呼び出しで日付文字列を作成できますが、簡単にするために3つの変数に分割することにしました読む。


25
Lankymart