程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 跨時間區域顯示相應區域時間的解決辦法

跨時間區域顯示相應區域時間的解決辦法

編輯:.NET實例教程

最近項目中遇到了一個問題,就是公司的一些電子商務站點的服務器在不同的國家,因此時間區域也不相同,但是後台管理顯示訂單的時間都要一致,這就需要解決時間區域的問題。經過網上的搜索,發現了一個很不錯的討論關於這個話題。

http://topic.csdn.Net/t/20021215/13/1262367.Html

該帖子中有以為作者提供了一個時間轉換的結構體:

 



using System;
    
    public struct LostinetTimeZone
    ...{
        private TimeSpan ts;
        public LostinetTimeZone(TimeSpan offsetHour)
        ...{
            ts = offsetHour;
        }

        public TimeSpan GetUtcOffset()
        ...{
            return ts;
        }


        public DateTime ToLocalTime(DateTime dtUTC)
        ...{
         &nbsreturn dtUTC + ts;
        }
        public DateTime ToUniversalTime(DateTime dtLocale)
        ...{
            return dtLocale - ts;
        }
        public DateTime TransformFrom(DateTime dtAntherTimeZone, LostinetTimeZone antherTimeZone)
        ...{
            return ToLocalTime(antherTimeZone.ToUniversalTime(dtAntherTimeZone));
        }

        public string ToString(DateTime dt)
        ...{
            //dt=dt.ToUniversalTime();//和下面是一樣的.   
            dt = dt - TimeZone.CurrentTimeZone.GetUtcOffset(dt) + ts;
            return dt.ToString();
        }

        //other   methods...   

        public static LostinetTimeZone UTC
        ...{
            get ...{ return new LostinetTimeZone(TimeSpan.FromHours(+0)); }
        }
        public static LostinetTimeZone UK
        ...{
            get ...{ return new LostinetTimeZone(TimeSpan.FromHours(+0)); }
        }
        public static LostinetTimeZone CN
        ...{
            get ...{ return new LostinetTimeZone(TimeSpan.FromHours(+8)); }
        }
        public static LostinetTimeZone US
        ...{
            get ...{ return new LostinetTimeZone(TimeSpan.FromHours(-5)); }
        }
        //other   timezones...   
    }
    class App
    ...{
        [STAThread]
        static void Main(string[] args)
        ...{
            DateTime dt = DateTime.Now;

            Console.WriteLine("ToUniversalTime :" + dt.ToUniversalTime().ToString());
            Console.WriteLine("中國 :" + LostinetTimeZone.CN.ToString(dt));
            Console.WriteLine("英國 :" + LostinetTimeZone.UK.ToString(dt));
            Console.WriteLine("美國 :" + LostinetTimeZone.US.ToString(dt));

            Console.WriteLine();

            //DateTime|TimeZone.ToUniversalTime   是個騙局:   
            Console.WriteLine(TimeZone.CurrentTimeZone.GetUtcOffset(dt).TotalHours);
            Console.WriteLine(TimeZone.CurrentTimeZone.GetUtcOffset(dt.ToUniversalTime()).TotalHours);

            Console.WriteLine();

            //美國時間,上面已經顯示了   
            string 美國時間 = LostinetTimeZone.US.ToString(dt);
            DateTime dtUSA = DateTime.Parse(美國時間);

            //從美國轉換過來?   

            //1:   
            //DateTime   dtUTC=LostinetTimeZone.美國.ToUniversalTime(dtUSA);   
            //DateTime   dtCN=LostinetTimeZone.中國.ToLocalTime(dtUTC);   

            //2:   
            DateTime dtCN = LostinetTimeZone.CN.TransformFrom(dtUSA, LostinetTimeZone.US);

            Console.WriteLine("美國
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved