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 @@
-
+