From e2564599670bf206657c89325f276f20d7265dcd Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Sat, 27 Jul 2019 12:43:52 +0800 Subject: [PATCH] update --- .../DateTimeExtensionsTest.cs | 19 --- DateTimeStudy.XUnitTest/DateTimeStudyTest.cs | 73 ---------- DateTimeStudy.sln | 24 ++-- DateTimeStudy/DateTimeExtensions.cs | 33 ----- DateTimeStudy/DateTimeOffsetStudy.cs | 47 ++++++ DateTimeStudy/DateTimeStudy.cs | 134 ------------------ DateTimeStudyTest/DateTimeOffsetStudyTest.cs | 25 ++++ .../DateTimeStudyTest.csproj | 2 +- 8 files changed, 85 insertions(+), 272 deletions(-) delete mode 100644 DateTimeStudy.XUnitTest/DateTimeExtensionsTest.cs delete mode 100644 DateTimeStudy.XUnitTest/DateTimeStudyTest.cs delete mode 100644 DateTimeStudy/DateTimeExtensions.cs create mode 100644 DateTimeStudy/DateTimeOffsetStudy.cs delete mode 100644 DateTimeStudy/DateTimeStudy.cs create mode 100644 DateTimeStudyTest/DateTimeOffsetStudyTest.cs rename DateTimeStudy.XUnitTest/DateTimeStudy.XUnitTest.csproj => DateTimeStudyTest/DateTimeStudyTest.csproj (98%) diff --git a/DateTimeStudy.XUnitTest/DateTimeExtensionsTest.cs b/DateTimeStudy.XUnitTest/DateTimeExtensionsTest.cs deleted file mode 100644 index 2c817cb..0000000 --- a/DateTimeStudy.XUnitTest/DateTimeExtensionsTest.cs +++ /dev/null @@ -1,19 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -using DateTimeStudy; - -namespace DateTimeStudy.XUnitTest -{ - public class DateTimeExtensionsTest - { - [Fact] - public void Test() - { - var aa = DateTime.Now.ToUtcTimestamp(); - var cc = aa.ToLocalTime(); - } - } -} diff --git a/DateTimeStudy.XUnitTest/DateTimeStudyTest.cs b/DateTimeStudy.XUnitTest/DateTimeStudyTest.cs deleted file mode 100644 index 89bb769..0000000 --- a/DateTimeStudy.XUnitTest/DateTimeStudyTest.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using Xunit; - -namespace DateTimeStudy.XUnitTest -{ - public class DateTimeStudyTest:IDisposable - { - /// - /// 构造函数:单元测试前的准备 - /// - public DateTimeStudyTest() - { - - } - - [Fact] - public void Test1() - { - Assert.Equal(1, 1.0); - } - - [Fact] - public void CreateDateTimeDefaultTest() - { - DateTimeStudy sudy = new DateTimeStudy(); - //无参时间:0001年1月1日 0时 0分 0秒 - var time = sudy.CreateDateTime(); - Assert.True(time.Year==1 && time.Month==1 && time.Day==1 && time.Hour==0 && time.Minute==0 && time.Second==0 && time.Millisecond==0); - Assert.True(time.Kind == DateTimeKind.Unspecified); - } - - [Fact] - public void CreateDateTime4TicksTest() - { - DateTimeStudy sudy = new DateTimeStudy(); - //UTC时间:2018-01-01 - long ticks = 636503616000000000; - var time = sudy.CreateDateTime(ticks); - Assert.True(time.Year == 2018 && time.Month == 1 && time.Day == 1 && time.Hour == 0 && time.Minute == 0 && time.Second == 0 && time.Millisecond == 0); - Assert.True(new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local) == time); - Assert.True(time.Kind == DateTimeKind.Unspecified); - } - - [Fact] - public void CreateDateTimeTest4() - { - DateTimeStudy sudy = new DateTimeStudy(); - //UTC时间:2018-01-01 - long ticks = 636503616000000000; - var time = sudy.CreateDateTime(ticks, DateTimeKind.Utc); - var time2 = sudy.CreateDateTime(ticks, DateTimeKind.Local); - - //这很奇怪:竟然相等 - Assert.Equal(time, time2); - Assert.True(time.Year == 2018 && time.Month == 1 && time.Day == 1 && time.Hour == 0 && time.Minute == 0 && time.Second == 0 && time.Millisecond == 0); - Assert.True(time2.Year == 2018 && time2.Month == 1 && time2.Day == 1 && time2.Hour == 0 && time2.Minute == 0 && time2.Second == 0 && time2.Millisecond == 0); - Assert.True(new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local) == time); - Assert.True(new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Utc) == time); - Assert.True(new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local) == time2); - Assert.True(new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Utc) == time2); - Assert.True(time.Kind == DateTimeKind.Utc); - Assert.True(time2.Kind == DateTimeKind.Local); - } - - /// - /// 相当于析构函数:单元测试收尾清理 - /// - public void Dispose() - { - - } - } -} diff --git a/DateTimeStudy.sln b/DateTimeStudy.sln index a77261b..75adf59 100644 --- a/DateTimeStudy.sln +++ b/DateTimeStudy.sln @@ -1,11 +1,11 @@ 锘 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27428.2037 +VisualStudioVersion = 15.0.27703.2000 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DateTimeStudy", "DateTimeStudy\DateTimeStudy.csproj", "{98679A2E-DBD2-4114-9708-64C5D89DA2B3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DateTimeStudy", "DateTimeStudy\DateTimeStudy.csproj", "{FD1888B3-85CE-4C01-AB70-AC260C5F5AE3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DateTimeStudy.XUnitTest", "DateTimeStudy.XUnitTest\DateTimeStudy.XUnitTest.csproj", "{38E899C0-095E-423A-B744-2806251E7C8D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DateTimeStudyTest", "DateTimeStudyTest\DateTimeStudyTest.csproj", "{034908E5-4A57-446F-B9DD-F9388ADFE019}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,19 +13,19 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {98679A2E-DBD2-4114-9708-64C5D89DA2B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98679A2E-DBD2-4114-9708-64C5D89DA2B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98679A2E-DBD2-4114-9708-64C5D89DA2B3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98679A2E-DBD2-4114-9708-64C5D89DA2B3}.Release|Any CPU.Build.0 = Release|Any CPU - {38E899C0-095E-423A-B744-2806251E7C8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38E899C0-095E-423A-B744-2806251E7C8D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38E899C0-095E-423A-B744-2806251E7C8D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38E899C0-095E-423A-B744-2806251E7C8D}.Release|Any CPU.Build.0 = Release|Any CPU + {FD1888B3-85CE-4C01-AB70-AC260C5F5AE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD1888B3-85CE-4C01-AB70-AC260C5F5AE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD1888B3-85CE-4C01-AB70-AC260C5F5AE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD1888B3-85CE-4C01-AB70-AC260C5F5AE3}.Release|Any CPU.Build.0 = Release|Any CPU + {034908E5-4A57-446F-B9DD-F9388ADFE019}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {034908E5-4A57-446F-B9DD-F9388ADFE019}.Debug|Any CPU.Build.0 = Debug|Any CPU + {034908E5-4A57-446F-B9DD-F9388ADFE019}.Release|Any CPU.ActiveCfg = Release|Any CPU + {034908E5-4A57-446F-B9DD-F9388ADFE019}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {EA58FCD3-3D43-46F8-8245-F8D16443AE8F} + SolutionGuid = {4E842325-6DCE-4BA8-81B7-A71856A669DE} EndGlobalSection EndGlobal diff --git a/DateTimeStudy/DateTimeExtensions.cs b/DateTimeStudy/DateTimeExtensions.cs deleted file mode 100644 index 3b43e80..0000000 --- a/DateTimeStudy/DateTimeExtensions.cs +++ /dev/null @@ -1,33 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Text; - -namespace DateTimeStudy -{ - /// - /// DateTime鎵╁睍绫 - /// - public static class DateTimeExtensions - { - /// - /// 浠ユ绉掍负鍗曚綅鐨刄TC鏃堕棿鎴 - /// - public static long ToUtcTimestamp(this DateTime sourceDate) - { - var utcTimeStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - return (sourceDate - utcTimeStart).Ticks; - } - - /// - /// 姣鍗曚綅UTC鏃堕棿鎴宠浆褰撳湴鏃堕棿 - /// - public static DateTime ToLocalTime(this long utcTimestamp) - { - DateTime utcTimeStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - - var timeSpan = new TimeSpan(utcTimestamp); - - return utcTimeStart.Add(timeSpan).ToLocalTime(); - } - } -} diff --git a/DateTimeStudy/DateTimeOffsetStudy.cs b/DateTimeStudy/DateTimeOffsetStudy.cs new file mode 100644 index 0000000..f063b54 --- /dev/null +++ b/DateTimeStudy/DateTimeOffsetStudy.cs @@ -0,0 +1,47 @@ +锘縰sing System; + +namespace DateTimeStudy +{ + /// + /// DateTimeOffset 瀛︿範 + /// + public static class DateTimeOffsetStudy + { + #region 鍒涘缓 + /// + /// 鏃犲弬榛樿 + /// + public static DateTimeOffset CreateDateTimeOffset() + { + DateTimeOffset myTime = new DateTimeOffset(); + + return DateTimeOffset.Now; + } + + /// + /// DateTime 鍋氬弬鏁 + /// + public static DateTimeOffset CreateDateTimeOffset(DateTime sourceDateTime) + { + DateTimeOffset myTime = new DateTimeOffset(sourceDateTime); + + return DateTimeOffset.Now; + } + + #endregion + + #region 鑾峰彇甯歌鏃堕棿 + + /// + /// 鑾峰彇褰撳墠鏃堕棿 + /// + /// + public static DateTimeOffset GetNow() + { + return DateTimeOffset.Now; + } + + + #endregion + } +} diff --git a/DateTimeStudy/DateTimeStudy.cs b/DateTimeStudy/DateTimeStudy.cs deleted file mode 100644 index 24890d2..0000000 --- a/DateTimeStudy/DateTimeStudy.cs +++ /dev/null @@ -1,134 +0,0 @@ -锘縰sing System; - -namespace DateTimeStudy -{ - /// - /// DateTime瀛︿範 - /// 鍏ㄧ悆鏃堕棿 - /// - /// http://www.cnblogs.com/artech/archive/2010/09/04/InsideDateTime_01.html - public class DateTimeStudy - { - #region 1銆佷綘鏄惁鐭ラ亾System.DateTimeKind - - /* - 璇存槑锛歋ystem.DateTime绫诲瀷涓嶆槸class锛岃屾槸涓涓猻truct锛屾崲瑷涔嬪畠鏄肩被鍨嬶紝鑰屼笉鏄紩鐢ㄧ被鍨嬨 - DateTime澶勭悊鍖呭惈鎴戜滑鐔熸倝鐨勫勾銆佹湀銆佹棩銆佹椂銆佸垎銆佺鍜屾绉掔瓑鍩烘湰灞炴т箣澶栵紝杩樺叿鏈変竴涓噸瑕佺殑琛ㄧず鏃堕棿绫诲瀷锛圞ind锛夌殑灞炴э細Kind銆 - 璇ュ睘鎬х殑绫诲瀷涓篠ystem.DateTimeKind鏋氫妇銆侱ateTimeKind瀹氫箟濡備笅锛屽畠鍏锋湁涓変釜鏋氫妇鍊硷細Unspecified銆乁tc鍜孡ocal銆 - 鍚庝袱涓垎鍒〃绀篣TC锛堟牸鏋楀▉娌绘椂闂达級鍜屾湰鍦版椂闂淬俇nspecified椤惧悕鎬濅箟锛屽氨鏄皻鏈寚瀹氬叿浣撶被鍨嬶紝杩欐槸榛樿鍊笺 - */ - /* DateTimeKind 浠g爜 - [Serializable, ComVisible(true)] - public enum DateTimeKind - { - Unspecified, - Utc, - Local - } - */ - - /* - 鍦―ateTime绫诲瀷涓紝琛ㄧず鏃堕棿绫诲瀷鐨凨ind灞炴ф槸鍙鐨勶紝鍙兘鍦ㄦ瀯閫犲嚱鏁颁腑鎸囧畾銆 - 铏界劧锛孠ind灞炴ф槸鍙鐨勶紝浣嗘槸鎴戜滑杩樼敤鍙﹀涓涓瀹欿ind鐨勬柟寮忥紝閭e氨鏄皟鐢―ateTime鐨勯潤鎬佹柟娉曠殑SpecifyKind銆傝鏂规硶涓嶄細鐪熸鍘讳慨鏀逛竴涓幇鏈塂ateTime瀵硅薄鐨凨ind灞炴э紝鑰屾槸浼氶噸鏂板垱寤轰竴涓柊鐨凞ateTime瀵硅薄銆傛柟娉曡繑鍥炵殑瀵硅薄鍏锋湁鍜屾寚瀹氭椂闂寸浉鍚岀殑鍩烘湰灞炴э紙骞淬佹湀銆佹棩銆佹椂銆佸垎銆佺鍜屾绉掞級锛岃DateTime瀵硅薄鍏锋湁浣犳寚瀹氱殑DateTimeKind鍊笺 - */ - - /// - /// 鍒涘缓鏃堕棿 - /// 鏃犲弬鏁 - /// - public DateTime CreateDateTime() - { - return new DateTime(); - } - - /// - /// 鍒涘缓鏃堕棿 - /// ticks - /// - public DateTime CreateDateTime(long ticks) - { - return new DateTime(ticks); - } - - /// - /// 鍒涘缓鏃堕棿 - /// ticks鍜孌ateTimeKind - /// - public DateTime CreateDateTime(long ticks, DateTimeKind kind) - { - return new DateTime(ticks,kind); - } - - /// - /// 鍒涘缓鏃堕棿 - /// 骞 鏈 鏃 鏃 鍒 绉 - /// - public DateTime CreateDateTime(int year, int month, int day, int hour, int minute, int second) - { - return new DateTime(year, month, day, hour, minute, second); - } - - /// - /// 鍒涘缓鏃堕棿 - /// 骞 鏈 鏃 鏃 鍒 绉 DateTimeKind - /// - public DateTime CreateDateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind) - { - return new DateTime(year, month, day, hour, minute, second, kind); - } - - /// - /// 鍒涘缓鏃堕棿 - /// 骞 鏈 鏃 鏃 鍒 绉 璞 - /// - public DateTime CreateDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond) - { - return new DateTime(year, month, day, hour, minute, second, millisecond); - } - - /// - /// 鍒涘缓鏃堕棿 - /// 骞 鏈 鏃 鏃 鍒 绉 璞 DateTimeKind - /// - public DateTime CreateDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind) - { - return new DateTime(year, month, day, hour, minute, second, millisecond, kind); - } - - - #endregion - - #region 2銆佸嚑涓父鐢―ateTime瀵硅薄鐨凞ateTimeKind - #endregion - - #region 3銆丏ateTime鐨勫绛夋ч棶棰 - #endregion - - #region 4銆侀氳繃DateTime绫诲瀷鐨凾oLocalTime鍜孴oUniversalTime鏂规硶瀹炵幇UTC鍜孡ocal鐨勮浆鎹 - /// - /// 鑾峰彇褰撳墠鏃堕棿鐨刄TC鏃堕棿鎴( - /// 鍗曚綅锛氭绉 - /// - public static long ToUtcTimestamp(DateTime sourceDate) - { - var startTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - return (sourceDate - startTime).Ticks; - } - - /// - /// 姣鍗曚綅UTC鏃堕棿鎴宠浆褰撳湴鏃堕棿 - /// - public static DateTime UtcTimestamp2DateTime(long utcTimestamp) - { - DateTime utcStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - - var timeSpan = new TimeSpan(utcTimestamp); - - return utcStart.Add(timeSpan).ToLocalTime(); - } - #endregion - - #region 5銆侀氳繃TimeZoneInfo瀹炵幇Utc鍜孡ocal鐨勮浆鎹 - #endregion - } -} diff --git a/DateTimeStudyTest/DateTimeOffsetStudyTest.cs b/DateTimeStudyTest/DateTimeOffsetStudyTest.cs new file mode 100644 index 0000000..7c8f507 --- /dev/null +++ b/DateTimeStudyTest/DateTimeOffsetStudyTest.cs @@ -0,0 +1,25 @@ +using System; +using DateTimeStudy; +using Xunit; + +namespace DateTimeStudyTest +{ + public class DateTimeOffsetStudyTest + { + [Fact] + public void CreateDateTimeOffsetTest() + { + var offsetTime = DateTimeOffsetStudy.CreateDateTimeOffset(); + var currentDateTime = DateTime.Now; + Assert.Equal(offsetTime.Date,currentDateTime.Date); + + var offsetTimespan = offsetTime.Offset; + Assert.Equal(8,offsetTimespan.Hours); + + TimeZoneInfo palmer = TimeZoneInfo.CreateCustomTimeZone("1", offsetTimespan, "DisplayName", "UTC8", "", new TimeZoneInfo.AdjustmentRule[]{}); + + Assert.Equal(DateTimeKind.Unspecified, offsetTime.Date.Kind); + + } + } +} diff --git a/DateTimeStudy.XUnitTest/DateTimeStudy.XUnitTest.csproj b/DateTimeStudyTest/DateTimeStudyTest.csproj similarity index 98% rename from DateTimeStudy.XUnitTest/DateTimeStudy.XUnitTest.csproj rename to DateTimeStudyTest/DateTimeStudyTest.csproj index 24a751b..c6f64a1 100644 --- a/DateTimeStudy.XUnitTest/DateTimeStudy.XUnitTest.csproj +++ b/DateTimeStudyTest/DateTimeStudyTest.csproj @@ -7,7 +7,7 @@ - +