Ejemplo n.º 1
0
        private ZDateTime ParseJustTime(string sdate, List <DateToken> tokens, ZTimeZone zone)
        {
            DateInfo idate = new DateInfo();

            ParseTime(sdate, ref idate, tokens, 0);

            return(CreateTime(ref idate, zone));
        }
Ejemplo n.º 2
0
        // Implementation


        private ZDateTime ParseDateTime(string sdate, List <DateToken> tokens, ZTimeZone default_zone)
        {
            var len = tokens.Count;

            if (len < 1)
            {
                throw new ArgumentException("failed to parse date, as unknown form: " + sdate);
            }

            // special-case, may be a timestamp
            var first = tokens[0];

            if (len == 1 && first.Type == DateToken.TType.NUMERIC)
            {
                long stamp = (long)first;

                // determine whether YYYYMMDD date or whether timestamp
                if (stamp > 19000000 && stamp < 90000000)
                {
                    return(new ZDateTime((int)(stamp / 10000), (int)(stamp / 100) % 100, (int)stamp % 100, 0, 0, 0, 0, default_zone));
                }
                else
                {
                    return(new ZDateTime(stamp, default_zone));
                }
            }

            // otherwise straight date-time
            else
            {
                DateInfo idate = new DateInfo();
                int      Itime = ParseDate(sdate, ref idate, tokens);
                ParseTime(sdate, ref idate, tokens, Itime);

                if (idate.Zone == null)
                {
                    idate.Zone = default_zone;
                }

                return(CreateDateTime(ref idate));
            }
        }
Ejemplo n.º 3
0
        /**
         * Create time from given info, relative to current date
         */
        private ZDateTime CreateTime(ref DateInfo info, ZTimeZone zone)
        {
            ZDateTime now = ZDateTime.TimeNowFor(zone);

            return(new ZDateTime(now.Year, now.Month, Math.Max(now.Day, 1), info.Hours, info.Minutes, info.Seconds, info.Milliseconds, info.Zone));
        }
Ejemplo n.º 4
0
        // Functions


        /// <summary>
        /// Parse date/time string
        /// </summary>
        /// <param name='sdate'>
        /// date.
        /// </param>
        /// <param name='default_zone'>
        /// default time zone
        /// </param>
        public ZDateTime Parse(string sdate, ZTimeZone default_zone)
        {
            List <DateToken> tokens = _lexer.Parse(sdate);

            return(ParseDateTime(sdate, tokens, default_zone));
        }