Exemplo n.º 1
0
        /// <summary>
        /// 將日期當作是「西元」年處理。
        /// </summary>
        /// <param name="dtString">日期字串。 </param>
        /// <param name="method">如果日期缺少的欄位用何種方式補上。</param>
        /// <returns></returns>
        public static DateTime? ParseGregorian(string dtString, PaddingMethod method)
        {
            PatternMatcher matcher = new PatternMatcher(dtString.Trim());

            if (!matcher.IsSuccess)
                return null;
            else
            {
                string assembly;

                if (method == PaddingMethod.None)
                {
                    foreach (Group each in matcher.EachGroup())
                        if (!each.Success) return null;

                    assembly = matcher.GetReassemblyString();
                }
                else
                {
                    int year, month, day, hour, minute, second;
                    DateTimePaddingInfo padding = new DateTimePaddingInfo(method);

                    ExtractInfo(matcher, padding, out year, out month, out day, out hour, out minute, out second);

                    assembly = year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second;
                }

                DateTime result;
                if (DateTime.TryParse(assembly, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out result))
                    return result;
                else
                    return null;
            }
        }