Esempio n. 1
0
        public static string FormatTimeLong(UTCDate udt, bool secs)
        {
            string fmt = "HH':'mm':'ss";
            string fmt_long = "HH':'mm':'ss' 'dd'.'MM'.'yyyy";
            if (!secs) {
                fmt = "HH':'mm";
            }

            DateTime dst = udt.ExtractLocal();
            string dst_s = dst.ToString(fmt);

            DateTime std = UTCDate.ResolveDST(dst, udt.DST);
            string std_s = std.ToString(fmt_long);

            string local_s = string.Format("{0} ST", dst_s);
            if (udt.HasDST) {
                local_s = string.Format("{0} DST  [{1} ST]", dst_s, std_s);
            }

            DateTime utc = UTCDate.ResolveTimezone(std, udt.Timezone);
            string utc_s = utc.ToString(fmt_long);

            string s = string.Format("{0}  [{1} UTC]", local_s, utc_s);

            return s;
        }
Esempio n. 2
0
 public static string FormatDiagramDate(UTCDate dt)
 {
     DateTime date = dt.ExtractLocal();
     Month month = (Month) Enum.ToObject(typeof(Month), date.Month-1);
     string month_s = month.ToString().Substring(0, 3);
     return string.Format("{0} {1}", month_s, date.Day);
 }
Esempio n. 3
0
 public static string FormatTime(UTCDate udt)
 {
     DateTime dt_local = udt.ExtractLocal();
     string fmt = "HH':'mm";
     return dt_local.ToString(fmt);
 }
Esempio n. 4
0
        public void PrintAnalemmaLabel(Graphics g, Color color,
		                               Position pos, UTCDate udt)
        {
            // northern hemisphere -> june longest, dec shortest
            int longest = 6;
            int shortest = 12;
            // southern hemisphere -> dec longest, june shortest
            if (pos.LatitudeDegree.Direction == PositionDirection.South) {
                longest = 12;
                shortest = 6;
            }

            UTCDate udt_inner = new UTCDate(udt.Timezone, udt.DST,
                                            udt.Year, longest, 21,
                                            udt.Hour, 0, 0);
            UTCDate udt_outer = new UTCDate(udt.Timezone, udt.DST,
                                            udt.Year, shortest, 21,
                                            udt.Hour, 0, 0);

            int hour_inner = udt_inner.ExtractLocal().Hour;
            int hour_outer = udt_outer.ExtractLocal().Hour;

            int legend_margin = 20;
            string legend_inner = null;
            string legend_outer = null;
            // we have DST
            if (udt_inner.IsDST || udt_outer.IsDST) {
                legend_inner = udt_inner.IsDST ? "DST" : "ST";
                legend_outer = udt_outer.IsDST ? "DST" : "ST";
            }

            float font_size = GetLabelFontSize();
            string hour_inner_s = Formatter.FormatHour(hour_inner);
            string hour_outer_s = Formatter.FormatHour(hour_outer);

            KeyValuePair<Point?,double?> pair_max =
                FindPointSlopeAtHour(pos, udt_inner);
            if ((pair_max.Key != null) && (pair_max.Value != null)) {
                Placement place = SlopeToPlacement(pair_max.Value.Value, pos);
                using (SolidBrush br_txt = new SolidBrush(color))
                using (Font font = new Font(font_face, font_size, GraphicsUnit.Pixel)) {
                    PrintBoundedString(g, font, br_txt, hour_inner_s,
                                       pair_max.Key.Value.X, pair_max.Key.Value.Y,
                                       place);

                    if ((legend_inner != null) && (hour_inner == 12)) {
                        PrintBoundedString(g, font, br_txt, legend_inner,
                                           graph.Origin.X + (int) (1.3 * (double) graph.Delta),
                                           pair_max.Key.Value.Y,
                                           place, legend_margin);
                    }
                }
            }

            KeyValuePair<Point?,double?> pair_min =
                FindPointSlopeAtHour(pos, udt_outer);
            if ((pair_min.Key != null) && (pair_min.Value != null)) {
                Placement place =
                    SlopeToPlacement( (pair_min.Value.Value + 180.0) % 360.0, pos);
                using (SolidBrush br_txt = new SolidBrush(color))
                using (Font font = new Font(font_face, font_size, GraphicsUnit.Pixel)) {
                    PrintBoundedString(g, font, br_txt, hour_outer_s,
                                       pair_min.Key.Value.X, pair_min.Key.Value.Y,
                                       place);

                    if ((legend_outer != null) && (hour_outer == 12)) {
                        PrintBoundedString(g, font, br_txt, legend_outer,
                                           graph.Origin.X + (int) (1.3 * (double) graph.Delta),
                                           pair_min.Key.Value.Y,
                                           place, legend_margin);
                    }
                }
            }
        }
Esempio n. 5
0
        public void TestTimezoneOffset()
        {
            int year = Rand.GetInt(2, 3000);
            int mon = Rand.GetInt(1, 12);
            int day = Rand.GetInt(1, DateTime.DaysInMonth(year, mon));
            int hour = Rand.GetInt(0, 23);
            int min = Rand.GetInt(0, 59);
            int sec = Rand.GetInt(0, 59);

            double tz = Rand.GetDouble(3, UTCDate.TIMEZONE_MIN, UTCDate.TIMEZONE_MAX);

            UTCDate udt = new UTCDate(tz, null, year, mon, day, hour, min, sec);
            DateTime dt = new DateTime(year, mon, day, hour, min, sec);

            dt = dt.AddHours(-tz); // resolve tz offset

            Assert.True(udt.ExtractUTC().CompareTo(dt) == 0);
            Assert.True(udt.ExtractUTC().Kind == DateTimeKind.Utc);
            Assert.True(udt.ExtractStandard().Kind == DateTimeKind.Local);
            Assert.True(udt.ExtractLocal().Kind == DateTimeKind.Local);
        }
Esempio n. 6
0
        /**
         * Traverse year and verify dst status.
         */
        private void TestDST(int tz, DaylightTime dst)
        {
            DateTime lower = dst.Start;
            TimeSpan dst_span = dst.Delta;

            int day = 15;
            int hour = 12;
            int min = 0;
            int sec = 0;

            for (int i=UTCDate.MONTH_MIN; i<=UTCDate.MONTH_MAX; i++) {
                // compute dates using UTCDate
                UTCDate udt = new UTCDate(tz, dst, lower.Year, i, day, hour, min, sec);
                DateTime dt_utc = udt.ExtractUTC();
                DateTime dt_std = udt.ExtractStandard();
                DateTime dt_loc = udt.ExtractLocal();

                // compute dates manually

                // utc time -> resolve timezone offset and dst
                DateTime dt_utc2 = new DateTime(lower.Year, i, day, hour, min, sec,
                                                DateTimeKind.Utc);
                dt_utc2 = dt_utc2.AddHours(-tz); // resolve tz offset
                if (udt.IsDST) dt_utc2 = dt_utc2.Add(-dst_span); // resolve dst

                // standard time -> resolve dst only
                DateTime dt_std2 = new DateTime(lower.Year, i, day, hour, min, sec,
                                                DateTimeKind.Local);
                if (udt.IsDST) dt_std2 = dt_std2.Add(-dst_span); // resolve dst

                // standard time -> given as input
                DateTime dt_loc2 = new DateTime(lower.Year, i, day, hour, min, sec,
                                                DateTimeKind.Local);

                Assert.True(dt_utc.CompareTo(dt_utc2) == 0);
                Assert.True(dt_std.CompareTo(dt_std2) == 0);
                Assert.True(dt_loc.CompareTo(dt_loc2) == 0);
            }
        }