可以定制 读取的时间格式 : 下面的示例使用表示五种不同区域性的 CultureInfo 对象来显示日期和时间的字符串表示形式。 Visual Basic 复制代码 Imports System.GlobalizationModule Example Public Sub Main() Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture, _ New CultureInfo("en-us"), _ New CultureInfo("fr-fr"), _ New CultureInfo("de-DE"), _ New CultureInfo("es-ES"), _ New CultureInfo("ja-JP")} Dim thisDate As Date =#5/1/2009 9:00AM# For Each culture As CultureInfo In cultures Dim cultureName As String If String.IsNullOrEmpty(culture.Name) Then cultureName = culture.NativeName Else cultureName = culture.Name End If Console.WriteLine("In {0}, {1}", _ cultureName, thisDate.ToString(culture)) Next End Sub End Module ' The example produces the following output: ' In Invariant Language (Invariant Country), 05/01/2009 09:00:00 ' In en-US, 5/1/2009 9:00:00 AM ' In fr-FR, 01/05/2009 09:00:00 ' In de-DE, 01.05.2009 09:00:00 ' In es-ES, 01/05/2009 9:00:00 ' In ja-JP, 2009/05/01 9:00:00
C# 复制代码 using System; using System.Globalization;public class Example { public static void Main() { CultureInfo[] cultures = new CultureInfo[] {CultureInfo.InvariantCulture, new CultureInfo("en-us"), new CultureInfo("fr-fr"), new CultureInfo("de-DE"), new CultureInfo("es-ES"), new CultureInfo("ja-JP")}; DateTime thisDate = new DateTime(2009, 5, 1, 9, 0, 0); foreach (CultureInfo culture in cultures) { string cultureName; if (string.IsNullOrEmpty(culture.Name)) cultureName = culture.NativeName; else cultureName = culture.Name; Console.WriteLine("In {0}, {1}", cultureName, thisDate.ToString(culture)); } } } // The example produces the following output: // In Invariant Language (Invariant Country), 05/01/2009 09:00:00 // In en-US, 5/1/2009 9:00:00 AM // In fr-FR, 01/05/2009 09:00:00 // In de-DE, 01.05.2009 09:00:00 // In es-ES, 01/05/2009 9:00:00 // In ja-JP, 2009/05/01 9:00:00
你要保持所有环境都一样就不能用不带参数的ToString,而要制定格式,比如 yyyy-MM-dd HH:mm:ss
Imports System.GlobalizationModule Example
Public Sub Main()
Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture, _
New CultureInfo("en-us"), _
New CultureInfo("fr-fr"), _
New CultureInfo("de-DE"), _
New CultureInfo("es-ES"), _
New CultureInfo("ja-JP")} Dim thisDate As Date =#5/1/2009 9:00AM# For Each culture As CultureInfo In cultures
Dim cultureName As String
If String.IsNullOrEmpty(culture.Name) Then
cultureName = culture.NativeName
Else
cultureName = culture.Name
End If Console.WriteLine("In {0}, {1}", _
cultureName, thisDate.ToString(culture))
Next
End Sub
End Module
' The example produces the following output:
' In Invariant Language (Invariant Country), 05/01/2009 09:00:00
' In en-US, 5/1/2009 9:00:00 AM
' In fr-FR, 01/05/2009 09:00:00
' In de-DE, 01.05.2009 09:00:00
' In es-ES, 01/05/2009 9:00:00
' In ja-JP, 2009/05/01 9:00:00
C# 复制代码
using System;
using System.Globalization;public class Example
{
public static void Main()
{
CultureInfo[] cultures = new CultureInfo[] {CultureInfo.InvariantCulture,
new CultureInfo("en-us"),
new CultureInfo("fr-fr"),
new CultureInfo("de-DE"),
new CultureInfo("es-ES"),
new CultureInfo("ja-JP")}; DateTime thisDate = new DateTime(2009, 5, 1, 9, 0, 0); foreach (CultureInfo culture in cultures)
{
string cultureName;
if (string.IsNullOrEmpty(culture.Name))
cultureName = culture.NativeName;
else
cultureName = culture.Name; Console.WriteLine("In {0}, {1}",
cultureName, thisDate.ToString(culture));
}
}
}
// The example produces the following output:
// In Invariant Language (Invariant Country), 05/01/2009 09:00:00
// In en-US, 5/1/2009 9:00:00 AM
// In fr-FR, 01/05/2009 09:00:00
// In de-DE, 01.05.2009 09:00:00
// In es-ES, 01/05/2009 9:00:00
// In ja-JP, 2009/05/01 9:00:00
什么叫做“取出来的日期”呢?程序中表达一个日期,就应该使用 DateTime 类型,而不是 String 类型。如果你连类型都搞错了,自然会乱!
自己格式化比较保险,HH是24,hh是12
基本上就这样了,Date只是一个日期对象,根据系统内的各种格式化设置转换成不同的字符串表现形式。如果需要撇开这些差异,你自己定好输出格式就行了。
Date.ToString("yyyy-MM-dd HH:mm:ss")这样输出就好了
日期时间类型,在内存里其实就是一组二进制数,表示的是从1970-1-1 0:0:0到现在的毫秒数
跟你转字符串变什么格式没有任何关系
而你转字符串直接用ToString()转,变成什么东西,跟你系统的时间区域设置有关
想不受系统设置影响,自己格式化,传入"yyyy-MM-dd HH:mm:ss"就是24小时制,传入"yyyy-MM-dd hh:mm:ss"就是12小时制
DateTime 结构
DateTime.Now 属性
DateTime.Now 属性,Now也是一个DateTime对象,取DateTime.Now.Date属性(与DateTime.Date属性一样),就是取到计算机本地时间的年月日,时分秒是一个默认的时间点。
下面的示例使用 Date 属性提取其时间组成部分设置为零(即 0:00:00 或午夜)的 DateTime 值的日期组成部分。 它还演示根据显示 DateTime 值时所使用的格式字符串的不同,时间组成部分可以继续显示在格式化输出中。