示例#1
0
        static int Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: NodaTime.NzdPrinter <path/url to nzd file>");
                return(1);
            }
            var stream  = new MemoryStream(FileUtility.LoadFileOrUrl(args[0]));
            int version = new BinaryReader(stream).ReadInt32();

            Console.WriteLine($"File format version: {version}");
            string[] stringPool = null; // Will be populated before it's used...
            foreach (var field in TzdbStreamField.ReadFields(stream))
            {
                Console.WriteLine($"Field: {field.Id}");
                var reader = new DateTimeZoneReader(field.CreateStream(), stringPool);
                switch (field.Id)
                {
                case StringPool:
                    stringPool = ReadStringPool(reader);
                    break;

                case TzdbStreamFieldId.TimeZone:
                    ReadTimeZone(reader);
                    break;

                case TzdbVersion:
                    Console.WriteLine($"TZDB version: {reader.ReadString()}");
                    break;

                case TzdbIdMap:
                    ReadMap(reader);
                    break;

                case CldrSupplementalWindowsZones:
                    ReadWindowsZones(reader);
                    break;

                case WindowsAdditionalStandardNameToIdMapping:
                    ReadMap(reader);
                    break;

                case ZoneLocations:
                    ReadZoneLocations(reader);
                    break;

                case Zone1970Locations:
                    ReadZone1970Locations(reader);
                    break;
                }
                Console.WriteLine();
            }

            return(0);
        }
示例#2
0
        public void InsufficientData()
        {
            var stream = new MemoryStream();
            var writer = new DateTimeZoneWriter(stream, null);

            writer.WriteByte(1);
            writer.WriteCount(10);

            stream.Position = 0;
            var iterator = TzdbStreamField.ReadFields(stream).GetEnumerator();

            Assert.Throws <InvalidNodaDataException>(() => iterator.MoveNext());
        }