我想更改经典 asp 中的默认日期时间格式。我在控制面板的区域和语言中更改了英国格式。
我用下面的代码进行了测试。
Response.Write Now()
它正确显示英国时间格式(“dd/mm/yyyy”)。但是我在下面更改了我的代码。
Response.Write CStr(Now())
它显示美国时间格式,如“mm/dd/yyyy”。
如何将其修复为英国时间格式?谢谢。
我想更改经典 asp 中的默认日期时间格式。我在控制面板的区域和语言中更改了英国格式。
我用下面的代码进行了测试。
Response.Write Now()
它正确显示英国时间格式(“dd/mm/yyyy”)。但是我在下面更改了我的代码。
Response.Write CStr(Now())
它显示美国时间格式,如“mm/dd/yyyy”。
如何将其修复为英国时间格式?谢谢。
听起来 IIS 上的区域设置设置为美国 - 将其设置为英国。这将为您提供无代码修复:)
另外,看看这个类似的问题:Change Default Locale in IIS 6.0
这里的 MSDN 文档说:
CStr 函数使用系统的区域设置来确定如何执行转换。
...包含系统
短日期格式的日期的字符串。
因此,请转到服务器控制面板中的“区域”设置并在那里更改日期格式。
如果您想要一个更强大的解决方案,那么您需要自己从日期部分组装字符串,或者远离经典的 ASP。
这个问题显示了一些解决方案: How can I reformat a date stored as a string in VB?
您可以在此处采用两种主要方法(假设您的当前值是一个字符串)。
方法一:拆分日期并重新格式化
此方法涉及使用 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")