87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| namespace ThinkingData.Analytics.Utils
 | |
| {
 | |
|     public class TDCommonUtils
 | |
|     {
 | |
|         public static string FormatDate(DateTime dateTime, TimeZoneInfo timeZone)
 | |
|         {
 | |
|             bool success = true;
 | |
|             DateTime univDateTime = dateTime.ToUniversalTime();
 | |
|             TimeSpan timeSpan = new TimeSpan();
 | |
|             try
 | |
|             {
 | |
|                 timeSpan = timeZone.BaseUtcOffset;
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|                 success = false;
 | |
|                 //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("FormatDate - TimeSpan get failed : " + e.Message);
 | |
|             }
 | |
|             try
 | |
|             {
 | |
|                 if (timeZone.IsDaylightSavingTime(dateTime))
 | |
|                 {
 | |
|                     TimeSpan timeSpan1 = TimeSpan.FromHours(1);
 | |
|                     timeSpan = timeSpan.Add(timeSpan1);
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|                 success = false;
 | |
|                 //if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("FormatDate: IsDaylightSavingTime get failed : " + e.Message);
 | |
|             }
 | |
|             if (success == false)
 | |
|             {
 | |
|                 timeSpan = TimeZone.CurrentTimeZone.GetUtcOffset(dateTime);
 | |
|             }
 | |
|             try
 | |
|             {
 | |
|                 DateTime dateNew = univDateTime + timeSpan;
 | |
|                 return dateNew.ToString("yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|             }
 | |
|             return univDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);
 | |
|         }
 | |
| 
 | |
|         public static string FormatDate(DateTime dateTime, TDTimeZone timeZone) {
 | |
|             DateTime univDateTime = dateTime.ToUniversalTime();
 | |
|             TimeSpan span;
 | |
|             switch (timeZone)
 | |
|             {
 | |
|                 case TDTimeZone.Local:
 | |
|                     span = TimeZoneInfo.Local.BaseUtcOffset;
 | |
|                     break;
 | |
|                 case TDTimeZone.UTC:
 | |
|                     span = TimeSpan.Zero;
 | |
|                     break;
 | |
|                 case TDTimeZone.Asia_Shanghai:
 | |
|                     span = TimeSpan.FromHours(8);
 | |
|                     break;
 | |
|                 case TDTimeZone.Asia_Tokyo:
 | |
|                     span = TimeSpan.FromHours(9);
 | |
|                     break;
 | |
|                 case TDTimeZone.America_Los_Angeles:
 | |
|                     span = TimeSpan.FromHours(-7);
 | |
|                     break;
 | |
|                 case TDTimeZone.America_New_York:
 | |
|                     span = TimeSpan.FromHours(-4);
 | |
|                     break;
 | |
|                 default:
 | |
|                     span = TimeSpan.Zero;
 | |
|                     break;
 | |
|             }
 | |
|             try
 | |
|             {
 | |
|                 DateTime dateNew = univDateTime + span;
 | |
|                 return dateNew.ToString("yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);
 | |
|             }
 | |
|             catch (Exception) {
 | |
|             }
 | |
|             return univDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |