What Will I Learn?
✓ Use date & time related types from BCL properly
✓ Use Noda Time for writing reliable code
✓ Avoid common mistakes
✓ Apply best practices of working with date and time values
Requirements
- You should have some experience in C# (nothing more)
Description
Learn how to work with date and time values properly.
Teaching Approach
No fluff, no ranting, no beating the air. I esteem your time. The course material is succinct, yet comprehensive. All the important concepts are covered. Particularly important topics are covered in-depth. For absolute beginners, I offer my help on Skype absolutely free, if requested.
Take this course, and you will be satisfied.
Build a solid foundation of working with Date and Time with this course
Almost all the software works with date and time in one form or another. Some programs, of course, need to work with date and time more than other. However, date and time hide many pitfalls even in very simple scenarios. We all know that security and logging are regular aspects of almost any program. There is a wise phrase that sounds like: “Developers recall about security when it is too late.” The same can be said about date and time. Most developers don’t even imagine how many bugs are hiding behind the simple face of date and time. Those bugs are sitting in programs and waiting for their moment to blow up your production code causing very unfortunate repercussions. That’s why working with date and time is the full-fledged and very important aspect of software development.
Have you watched magnificent enlightening TV Shows by BBC? This course in some parts is like those BBC shows because you’ll learn many interesting surprising facts. Besides, being familiar with peculiarities of working with date and time, you can write much more reliable and maintainable applications.
Content and Overview
This course is aimed at all kind of developers. It provides solid theoretical base reinforced by the practical material.
We start with basics of date and time. I’ll show you some real cases when bugs related to date and time caused unpleasant consequences, event deaths of people. You’ll learn why the hell Gregorian calendar was introduced, why the 5th of October 1582 doesn’t exist at all. And did you know that actually a minute can last more than 60 seconds? Yes, you heard that, a minute can last more than 60 seconds. You’ll learn what is UTC, GMT, what is the difference between them and how time gets synchronized between computers all over the world. And by the way, what is time at all, how humanity measures it? After that, you’ll be introduced to the concept of time zones, you’ll learn about different standards that regulate date and time formatting. You’ll learn what is Epoch Time and Unix Time. Finally, you’ll understand the difference between different date-time scopes and perspectives.
The next section is dedicated to Time Zones where you’ll learn about daylight saving time and different very odd case with time transitions back and forth. I’ll give you a full definition of a time zone. You’ll learn more about providers of time zone information: IANA and Microsoft. You’ll learn many interesting facts and what fallacies exist about time zones.
The third section is all about date and time-related types from BCL in .NET. You’ll learn about DateTime, DateTimeOffset, TimeZoneInfo, TimeSpan, Calendars and Stopwatch. I’ll show you that DateTime hides many pitfalls. You’ll learn that actual precision of BCL types is not equal to 100 nanoseconds as declared in the documentation. You’ll see how many calendars exist and what we can do with them. The third section reveals all the problems with the types built-in to BCL, so in the next section, you’ll learn about a third-party library called “Noda Time”.
Yes, a whole section is dedicated to the Noda Time library. You’ll learn about features provided by this library. You’ll get an overview of all the core types such as: LocalTime, LocalDate, LocalDateTime, Instant, Interval, Duration, ZonedDateTime and others. You’ll also learn how to write unit tests on code which uses date and time values with the help of Noda Time.
The whole section is dedicated to best practices of working with date and time. You’ll see some astonishing things like arithmetic on dates and problems of birthday calculation. You’ll learn the problems related to parsing and how to overcome them. I’ll show you the problems of events scheduling and what to do to avoid common mistakes. You’ll learn about date and time ranges, “intervals” is a separate peculiar topic. I’ll also show some additional best practices.
In other words, an exciting journey is waiting for you, just take it, relax and enjoy.
So, in short, the course covers the following topics:
- Date and Time Fundamentals: Gregorian calendar, UTC, GMT, Atomic Time, How Computers Store Time, NTP, Date and Time Formats based on Standards and Specifications, Epoch Time and Unit Time, Date and Time Scope and Perspective
- Time Zones: Definition (complex one), Daylight-Saving Time (DST), Providers such as IANA or TZDB and Microsoft
- Date and Time in .NET: DateTime, DateTimeOffset, TimeZoneInfo, TimeSpan, Calendars, Stopwatch and many intrinsic details.
- Noda Time: overview, core types, unit testing
- A great number of best practices of working with Date and Time: arithmetic on dates, parsing, calculating of birthdays, scheduling events, date formats, ranges and other.
In the end, we will recap what you have learned.
How long is this course: The course is around 3 hours. All are video lectures. You will be able to download all the slides and code samples used in the course.
Keywords.
- C# datetime, C# datetime format, datetime parse, C# datetimeoffset, date and time fundamentals, datetime in .net, noda time, nodatime, C# datetime now, C# string to datetime, C# tostring format, utc now,
- noda time tutorial, C# datetime tutorial, datetime C# tutorial, datetime vs nodatime, datetime vs noda time, noda time C#, noda time vs datetimeoffset, noda time vs datetime
- SQL date, SQL Server Date Functions, SQL Date Functions, DateTime SQL, SQL Server DateTime.
Who is the target audience?
- Anyone who is interested in working with date and time
- C# developers who want to write reliable code that works with date and time
Curriculum
- Outline
- Why Learn About Date and Time
- Problems with Dates and Times
- How PC Stores and Measures Time
- Atomic Time
- GMT
- Intro-TZ
- DT-Formats
- Unix-Epoch
- DT-Scope
- Perspective
- Conclusion
- Outline
- Daylight Saving Time (DST)
- What is a Time Zone
- IANA Time Zone Database (TZDB)
- Microsoft Time Zone DB
- Conclusion
- Outline
- DateTime Structure
- DateTime Roundtrip Example
- DateTimeOffset
- TimeZoneInfo – Working with Time Zones
- TimeSpan
- Calendars
- Stopwatch
- Conclusion
- Overview
- Core Types
- Writing Unit Tests
- Conclusion
- Outline
- DATE
- TIME
- DATETIME
- Functions
- DATETIMEOFFSET and Time Zones
- Conclusion
- Outline
- Arithmetic on Dates
- The Problem of Parsing
- Calculating Age
- Scheduling Events
- Date Formats
- Working with Ranges
- Other Best Practices
- Conclusion