Ejemplo n.º 1
0
        public static void Vypis(VstupJson vstup)
        {
            string format = "dd.MM.yyyy HH:mm:ss K";

            Console.WriteLine("DateTime");
            Console.WriteLine();
            Console.WriteLine($"dtCasvUTC: {vstup.dtCasvUTC.ToString(format)}");
            Console.WriteLine($"dtCasvCET: {vstup.dtCasvCET.ToString(format)}");
            Console.WriteLine($"dtCasvMSK: {vstup.dtCasvMSK.ToString(format)}");

            Console.WriteLine();
            Console.WriteLine("Prevedeno na UTC");
            Console.WriteLine($"dtCasvUTC: {TimeZoneInfo.ConvertTimeToUtc(vstup.dtCasvUTC).ToString(format)}");
            Console.WriteLine($"dtCasvCET: {TimeZoneInfo.ConvertTimeToUtc(vstup.dtCasvCET).ToString(format)}");
            Console.WriteLine($"dtCasvMSK: {TimeZoneInfo.ConvertTimeToUtc(vstup.dtCasvMSK).ToString(format)}");

            Console.WriteLine();
            Console.WriteLine("dtCasvUTC == dtCasvCET");
            Console.WriteLine((vstup.dtCasvUTC == vstup.dtCasvCET).ToString());

            Console.WriteLine();
            Console.WriteLine("dtCasvCET == dtCasvMSK");
            Console.WriteLine((vstup.dtCasvCET == vstup.dtCasvMSK).ToString());

            Console.WriteLine();
            TimeSpan rozdilCasu = vstup.dtCasvUTC - vstup.dtCasvCET;

            Console.WriteLine("dtCasvUTC - dtCasvCET [sec]");
            Console.WriteLine(rozdilCasu.TotalSeconds.ToString());

            Console.WriteLine();
            rozdilCasu = vstup.dtCasvCET - vstup.dtCasvMSK;
            Console.WriteLine("dtCasvCET - dtCasvMSK [sec]");
            Console.WriteLine(rozdilCasu.TotalSeconds.ToString());

            Console.WriteLine();
            Console.WriteLine();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            using EfcoredatetimeContext db = new EfcoredatetimeContext();
            int dbTestId = 0;

            try
            {
                //
                DateTimeOffset nowUtc = DateTime.UtcNow;
                DateTimeOffset now    = DateTime.Now;
                //

                var rozdil = nowUtc - now;

                string json = "{"
                              + "dtCasvUTC:\"2021-03-18T23:30:00Z\","                   //UTC
                              + "dtCasvCET:\"2021-03-19T00:30:00+01:00\","              //CR
                              + "dtCasvMSK:\"2021-03-19T02:30:00+03:00\""               //Moskva
                              + "}";

                var vstup = JsonConvert.DeserializeObject <VstupJson>(json);

                Console.WriteLine("Nacteni z json:");
                Console.WriteLine(json);

                Vypis(vstup);

                var vstupOffset = JsonConvert.DeserializeObject <VstupJsonOffset>(json);

                Vypis(vstupOffset);

                DateTimeTest dbTestDoDB = new DateTimeTest
                {
                    dt1              = vstup.dtCasvUTC,
                    dt2              = vstup.dtCasvCET,
                    dt3              = vstup.dtCasvMSK,
                    dfoff1           = vstupOffset.dtCasvUTC,
                    dfoff2           = vstupOffset.dtCasvCET,
                    dfoff3           = vstupOffset.dtCasvMSK,
                    dfoffMSKDateTime = vstup.dtCasvMSK
                };

                db.Add(dbTestDoDB);
                db.SaveChanges();
                dbTestId = dbTestDoDB.Id;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            //na stejnem contextu si panatuje casove zony
            using EfcoredatetimeContext db1 = new EfcoredatetimeContext();
            try
            {
                Console.WriteLine("Nacteni z DB:");
                Console.WriteLine("z typu DateTime");

                DateTimeTest dbTestZDB = db1.DateTimeTest
                                         .Where(x => x.Id == dbTestId)
                                         .FirstOrDefault();

                var settings = new JsonSerializerSettings();
                settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                settings.DateFormatString     = "yyyy-MM-ddTHH:mm:ss.ffzzz";
                //settings.DateFormatString = "u";
                Console.WriteLine(JsonConvert.SerializeObject(dbTestZDB, settings));
                Console.WriteLine();

                settings = new JsonSerializerSettings
                {
                    Converters =
                    {
                        new IsoDateTimeOffsetConverter()
                    }
                };

                Console.WriteLine("vlastni serializace");
                Console.WriteLine();
                Console.WriteLine(JsonConvert.SerializeObject(dbTestZDB, settings));


                DateTime a1 = dbTestZDB.dfoff3.DateTime;
                DateTime a2 = dbTestZDB.dfoff3.UtcDateTime;
                DateTime a3 = dbTestZDB.dfoff3.LocalDateTime;


                var zDateTime = new VstupJson
                {
                    dtCasvUTC = dbTestZDB.dt1,
                    dtCasvCET = dbTestZDB.dt2,
                    dtCasvMSK = dbTestZDB.dt3
                };

                Vypis(zDateTime);

                Console.WriteLine();
                Console.WriteLine("Nacteni z DB:");
                Console.WriteLine("z typu DateTimeOffset");

                var zDateTimeOffset = new VstupJsonOffset
                {
                    dtCasvUTC = dbTestZDB.dfoff1,
                    dtCasvCET = dbTestZDB.dfoff2,
                    dtCasvMSK = dbTestZDB.dfoff3
                };

                DateTimeOffset a = new DateTimeOffset();

                Vypis(zDateTimeOffset);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            Console.ReadLine();
        }