最近在使用SQLite的數據庫,發現SQLiteConnection類,有一個屬性DateTimeKind
去msdn上找了下資料,http://msdn.microsoft.com/en-us/library/shx7s921(v=vs.110).aspx
寫了一個demo加深理解,代碼已經上傳至https://github.com/chucklu/Test/blob/master/DotNetFrameworkClassLibrary/System/DateTimeKind/DateTimeKindDemo/Program.cs
想學習,如何使用git和github的同學,可以加我的qq群 程序員之家146605007
/// <summary> /// DateTimeKind測試 /// </summary> class Program { static readonly string dateTimeFormat = "yyyy-MM-dd HH:mm:ss"; static void Main(string[] args) { DateTime now = DateTime.Now; DateTime utcNow = DateTime.UtcNow; Console.WriteLine(string.Format("Local時間{0}", now.ToString(dateTimeFormat))); Console.WriteLine(string.Format("UTC時間{0}", utcNow.ToString(dateTimeFormat))); Console.WriteLine(); DateTime tmpTime; tmpTime = now.ToUniversalTime(); Console.WriteLine(string.Format("Local時間轉換為UTC時間 {0}", tmpTime.ToString(dateTimeFormat))); tmpTime = utcNow.ToLocalTime(); Console.WriteLine(string.Format("UTC時間轉換為Local時間 {0}", tmpTime.ToString(dateTimeFormat))); Console.WriteLine(); //系統時區,為北京時間 tmpTime = DateTime.SpecifyKind(now,DateTimeKind.Unspecified); //未指定時間的話,轉換Local的時候,時間默認為UTC的,加上當前系統的時區的時差+8,也就是加上8個小時 Console.WriteLine(string.Format("Unspecified時間轉換為Local時間 {0}", tmpTime.ToLocalTime().ToString(dateTimeFormat))); //未指定時間的話,轉換UTC的時候,時間默認為Local的,加上當前系統的時區的時差-8,也就是減去8個小時 Console.WriteLine(string.Format("Unspecified時間轉換為UTC時間 {0}", tmpTime.ToUniversalTime().ToString(dateTimeFormat))); Console.ReadLine(); } }
另外還需要吐槽下,SQLite的時間建議按照"yyyy-MM-dd HH:mm:ss"的格式進行插入,其他格式可以參考https://www.sqlite.org/lang_datefunc.html
bool類型必須按照"1或0"插入,不可以用true和false插入
雖然明白了DateTimeKind的作用,但是實際使用的時候,發現SQLite貌似不太支持
public DateTimeKind DateTimeKind { public get; public set; }
這個屬性,設置和不設置,沒有區別