我想更改经典asp中的默认日期时间格式。我更改了区域和语言控制面板中的英国格式。
我用以下代码测试过。
Response.Write Now()
它正确显示英国时间格式(“dd / mm / yyyy”)。但我改变了下面的代码。
Response.Write CStr(Now())
它显示美国时间格式,如“mm / dd / yyyy”。
如何将其修复为英国时间格式?感谢。
答案 0 :(得分:2)
听起来IIS上的区域设置设置为美国 - 将其设置为英国。这将为您提供免代码修复:)
另外,请看一下类似的问题:Change Default Locale in IIS 6.0
答案 1 :(得分:1)
MSDN文档here说:
CStr功能使用系统的区域设置来确定如何执行转换 ...
包含系统短日期格式的日期的字符串。
因此,请转到服务器控制面板中的“区域”设置,并更改其中的日期格式。
如果你想要一个更强大的解决方案,那么你需要自己从日期部分组装字符串,或者远离传统的ASP。
此问题中显示了一些解决方案:How can I reformat a date stored as a string in VB?
答案 2 :(得分:0)
这里有两种主要的方法(假设你的当前值是一个字符串)。
方法一:拆分日期并重新格式化
此方法涉及使用String.Split()方法,该方法将创建一个提供字符串和分隔符的数组。通过引用数组的索引,您可以将它们重建为您想要的格式:
'Your Date Components being split into an array'
Dim dc() As String = rs("StayDate").Split("/"c)
'Creates a new string by moving around the different indices 0 - dd, 1 - MM, 2 - yyyy'
Dim newDate As String = String.Format("{0}/{1}/{2}", dc(1), dc(0), dc(2))
方法二:解析和格式化
第二种方法将使用DateTime.ParseExact()解析您的字符串,并允许您指定日期最初的格式,然后您可以使用ToString()方法根据需要输出它:
Imports System.Globalization
'Parses the date and outputs it in your new format'
Dim newDate As String = DateTime.ParseExact(rs("StayDate").Value, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy")