Example #1
0
        private static string GetDateTimeUtcOffsetValue(TimeSpan offset, DateTimeUtcOffset utcOffset)
        {
            var checkPatterm = Regex.IsMatch(offset.ToString(), @"^\d{2}:\d{2}:\d{2}$", RegexOptions.IgnoreCase);
            var vSign        = string.Empty;
            var vHH          = string.Empty;
            var vMM          = string.Empty;
            var vSS          = string.Empty;
            var offsetText   = offset.ToString();

            if (checkPatterm)
            {
                vSign      = "+";
                offsetText = offsetText.Substring(0, offsetText.Length);
            }
            else
            {
                vSign      = "-";
                offsetText = offsetText.Substring(1, offsetText.Length - 1);
            }

            string[] splitOffset = offsetText.Split(':');
            vHH = splitOffset[0];
            vMM = splitOffset[1];
            vSS = splitOffset[2];

            if (utcOffset == DateTimeUtcOffset.HHMMByColon)
            {
                return(vSign + vHH + ":" + vMM);
            }
            else if (utcOffset == DateTimeUtcOffset.HHMM)
            {
                return(vSign + vHH + vMM);
            }
            else if (utcOffset == DateTimeUtcOffset.HH)
            {
                return(vSign + vHH);
            }
            else
            {
                return("");
            }
        }
Example #2
0
        /// <summary>
        /// ใช้สำหรับแสดงวันเวลาปัจจุบัน (UTC) ให้อยู่ในรูปแบบตามที่ระบุ โดยใช้ Time Zone ไทย (GMT +07:00 - SE Asia Standard Time)
        /// </summary>
        /// <param name="format"></param>
        /// <param name="culture"></param>
        /// <param name="isShowOffset"></param>
        /// <returns></returns>
        public static string GetCurrentUtcDateTimeInThaiTimeZone(DateTimeFormat format, LanguageCultureName culture, DateTimeUtcOffset utcOffset)
        {
            var formatValue   = GetDateTimeFormatValue(format);
            var cultureValue  = GetCultureValue(culture);
            var currentUtc    = DateTime.UtcNow;
            var timezone      = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"); //https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx
            var convertedTime = TimeZoneInfo.ConvertTimeFromUtc(currentUtc, timezone);
            var offset        = timezone.GetUtcOffset(currentUtc);

            if (utcOffset != DateTimeUtcOffset.Null)
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)) + GetDateTimeUtcOffsetValue(offset, utcOffset));
            }
            else
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)));
            }
        }
Example #3
0
        /// <summary>
        /// ใช้สำหรับแปลงวันเวลาที่ระบุ ให้เป็นวันเวลา (UTC) อยู่ในรูปแบบตามที่ระบุ โดยใช้ Time Zone ตามที่ระบุ
        /// </summary>
        /// <param name="datetime"></param>
        /// <param name="timeZoneId"></param>
        /// <param name="format"></param>
        /// <param name="culture"></param>
        /// <param name="utcOffset"></param>
        /// <returns></returns>
        public static string ConvertToUtcDateTimeByTimeZoneId(DateTime datetime, TimeZoneDisplayName timezoneId, DateTimeFormat format, LanguageCultureName culture, DateTimeUtcOffset utcOffset)
        {
            var timezoneValue = GetTimeZoneValue(timezoneId);
            var formatValue   = GetDateTimeFormatValue(format);
            var cultureValue  = GetCultureValue(culture);
            var datetimeUtc   = datetime.ToUniversalTime();
            var timezone      = TimeZoneInfo.FindSystemTimeZoneById(timezoneValue); //https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx
            var convertedTime = TimeZoneInfo.ConvertTimeFromUtc(datetimeUtc, timezone);
            var offset        = timezone.GetUtcOffset(datetimeUtc);

            if (utcOffset != DateTimeUtcOffset.Null)
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)) + GetDateTimeUtcOffsetValue(offset, utcOffset));
            }
            else
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)));
            }
        }
Example #4
0
        /// <summary>
        /// ใช้สำหรับแปลงวันเวลาที่ระบุ ให้เป็นวันเวลา (UTC) อยู่ในรูปแบบตามที่ระบุ โดยใช้ Time Zone ไทย (GMT +07:00 - SE Asia Standard Time)
        /// </summary>
        /// <param name="datetime"></param>
        /// <param name="format"></param>
        /// <param name="culture"></param>
        /// <param name="isShowOffset"></param>
        /// <returns></returns>
        public static string ConvertToUtcDateTimeInThaiTimeZone(DateTime datetime, DateTimeFormat format, LanguageCultureName culture, DateTimeUtcOffset utcOffset)
        {
            var formatValue  = GetDateTimeFormatValue(format);
            var cultureValue = GetCultureValue(culture);
            var datetimeUtc  = datetime.ToUniversalTime();
            var timezone     = TimeZoneInfo.Local;

            try
            {
                timezone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Bangkok"); //https://docs.microsoft.com/en-us/rest/api/maps/timezone/gettimezoneenumwindows
            }
            catch
            {
                try
                {
                    timezone = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"); //https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx
                }
                catch
                {
                    timezone = TimeZoneInfo.Local;
                }
            }
            var convertedTime = TimeZoneInfo.ConvertTimeFromUtc(datetimeUtc, timezone);
            var offset        = timezone.GetUtcOffset(datetimeUtc);

            if (utcOffset != DateTimeUtcOffset.Null)
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)) + GetDateTimeUtcOffsetValue(offset, utcOffset));
            }
            else
            {
                return(convertedTime.ToString(formatValue, CultureInfo.CreateSpecificCulture(cultureValue)));
            }
        }