Magnus Mårtensson
Microsoft Regional Director, Azure MVP, CEO Loftysoft
Avirag Jain
Director & CTO R Systems
Mahesh Chand
Founder C# Corner, CEO Mindcracker
Chris Gali
CEO & Co-Founder Graphite
Subinder Khurana
Chief Architect StoryProcess, Founder NASSCOM DeepTech Club
Bryan Rishforth
Investor, Chairman Graphite
Bryn Everson
Director Biz Dev Graphite
Raj Tiwari
Digital Transformation Leader, Futurist and Visionary
Joseph Guadagno
Microsoft MVP, Lead Quicken Loans
Nikita Sachdev
Entrepreneur, Blockchain Enthusiast & Advisor, Social Media Influencer
Doug Wagner
COO & Founder Adapt Technical Group
Ritesh Modi
Architect, Senior Evangelist, Cloud Architect
Crystal Wenrick
Director Communications Mindcracker
Allen O’Neill
Microsoft MVP, Consulting Engineer/Architect
Praveen Kumar
CEO MCN Solutions
Chris Love
Founder Love2Dev, Microsoft MVP, Author
Sanjay Vyas
Microsoft Regional Director, Microsoft MVP, Founder & CEO SkillLabs Technologies
Veena Sarda
Deep Learning Consultant, Author
Sekhar Srinivasan
C# Corner MVP, Microsoft Certified Trainer, Pluralsight Author
Lalit Bansal
Founder & CEO - EIY SYS
Navdeep Garg
CEO Revinfotech
Prakash Tripathi
Tech Manager/Leader, Microsoft MVP, Blogger
Bhavna Jain
Breakthrough Consultant
Naveen Sharma
Enterprise Architect, Leadership Coach, Author
Vidya Vrat Agarwal
Principal Architect, Microsoft MVP, Author
Sheetal Agarwal
Founder Clownselors, Medical Clown, Trainer
Abhishek Kant
Founder GTM Catalyst
Vishnu Saran
Founder & CEO VoiceQube
Sandeep Soni
Founder & CEO Deccansoft, Microsoft Certified Trainer
Parveen Malik
AVP InfoSec & Vulnerability Management, Information Security Expert
Nitin Pandit
Microsoft MVP, Developer Evangelist, Author
Niloshima Srivastava
C# Corner MVP, Tech Architect, Trainer, Blogger
Bala Chirtsabesan
Senior Software Engineer at Microsoft, Author
Manoj Mittal
Sr. Technical Architect, C# Corner MVP, Author
Chandni Di
Co-Founder Voice of Slum
Vithal Wadje
Technical Lead, Microsoft MVP, Author
Shivam Ahuja
Founder SkillCircle, Business Mentor
Chervine Bhiwoo
Solution Architect, Microsoft MVP, Author
Saurabh Jain
Vice President Paytm, Founder Fun2Do Labs, Author
Vinay Solanki
Head IoT at Lenovo, Founder IoT-NCR
Anshu kumari
Founder Blockchainkids, Inventor, Trainer
Amit Singal
CEO Startup Buddy
Dev Pratap
Co-Founder & CEO Voice of Slum
Amey Vartak
Technology Consultant, Full Stack Developer, C# Corner MVP, Author
Viswanatha Swamy
Principal Software Engineer, C# Corner MVP, Author
Sanket Verma
Research Engineer @ Ballistics (Forensics) and Chair, PyData Delhi
Sourabh Somani
Lead Developer, Microsoft MVP, Author
Abhishek Mishra
Software Architect, C# Corner MVP, Author
Siddharth Vaghasia
Technical Consultant, C# Corner MVP, Blogger
Bassam Alugili
Senior Software Specialist, Database Expert
S Ravi Kumar
Solution Architect, C# Corner MVP, Author
Sundaram Subramanian
Full Stack Developer, C# Corner MVP, Speaker
Deepesh Somani
Solution Architect, Microsoft MVP, Author
Debasis Saha
Technical Project Manager, C# Corner MVP, Blogger, Author
Vipul Jain
Software Architect, C# Corner MVP, Author
Akshay Patel
Technical Architect, Microsoft Certified Trainer, C# Corner MVP, Author
Stephen Simon
RPA Developer, Evangelist, Author
Vivek Sharma
Founder Kingster636, AR/VR Specialist
Jeetendra Gund
Technical Lead, C# Corner MVP, Author
Sujal Beniwal
AI Enthusiast, Student
M Viknaraj
Microsoft MVP, Azure Architect, Author
Prasham Sabadra
Software Architect, C# Corner MVP, Trainer, Author
Aakash Maurya
Senior Developer, C# Corner MVP, Speaker
Ankit Sharma
Senior Software Engineer, C# Corner MVP, Author
Mangesh Gaherwar
Team Lead, C# Corner MVP, Author
Viral Jain
Technical Consultant, C# Corner MVP, Author
Bhasker Das
Solution Architect, Evangelist
Manish Dwivedi
Associate Project Manager
Ck Nitin
Programmer, Author
Rohit Gupta
Technical Trainer, Author
Manish Tewatia
Full-stack Marketer, UX Designer
Bhavya Gaur
Technical Illustrator
Rohit Tomar
SEO/SMO Expert
Web Track
Cloud & Data Track
Dev Track
Registration & Breakfast
Future of Desktop Apps with JS (ElectronJs)
Nitin Pandit
Building Serverless Microservices Using Microsoft Azure
Vithal Wadje
Innovating RPA: A Robot for Every Person
Stephen Simon
Managing Cloud Storage Accounts using Logic Apps
Viknaraj Manogararajah
Data visualization using Python
Sekhar Srinivasan
Going Cross platform with AR Foundation
Vivek Sharma
Keynote
Managing your Azure dependencies in ASP.NET Core apps using VS
Bala Chirtsabesan
Securing Applications on Intelligent Azure
Abhishek Mishra
Getting started with Blazor the Framework of Future
S Ravi Kumar
Lunch
Build Progressive Web Apps using Angular 9
Debasis Saha
Build and deploy to any platform using Azure DevOps
Chervine Bhiwoo
Deep Dive in Azure Service Bus
Akshay Patel
Build a Native Mobile Application using React Native and JavaScript
Joseph Guadagno
Making sense of Web Job, Web Job SDK and Functions in Azure
Prakash Tripathi
CloudFront Distribution in AWS
Viral Jain
Tea Break
Introduction to PowerBI
Aakash Maurya
Build Advanced SPFx solutions with React and Graph API
Siddharth Vaghasia
Build Business Intelligence Analyst (BIA) Skills
Sundaram Subramanian
Deep dive of Power Platform – AI BUILDER
Prasham Sabadra
Panel 1
What's new in SharePoint development
Vipul Jain
Build a SSO (Single Sign On) based Native JavaScript application with Microsoft Identity within 10 minutes
Manoj Mittal
Panel 2
Applications and working of AI
Veena Sarda
Deploying serverless API's with .Net core 3.0 on AWS & Azure
Amey Vartak
Panel 3
Blockchain with .NET Core (Ark)
Anshu Kumari
Closing Note & Prize Distribution
Dev Track
Cloud Track
Architecture Track
Emerging Tech Track
Registration & Breakfast
Creating Full-Stack Web Apps Using Server-Side Blazor
Ankit Sharma
Real time face recognition with MS Cognitive Services
Niloshima Srivastava
Building Scalable APIs with GraphQL
Jeetendra Gund
Future of development with AI and Blockchain
Navdeep Garg
Debugging Tips and Tricks with Visual Studio 2019
Joseph Guadagno
Azure Containers
Abhishek Kant
Enterprise Architecture
Naveen Sharma
Bot Framework - learn it fast and look like a boss!
Allen O’Neill
Keynote
.Net Core & C# 8 Performance
David McCarter
Working with Azure kubernetes services
Ritesh Modi
Becoming an Architect
Vidyavrat Agarwal
Why Techies Need to Learn Product Management
Saurabh Jain
Lunch
Build a rules engine in .Net Core
Sanjay Vyas
Building CI and CD Pipeline using Azure DevOps
Sandeep Soni
Entity Framework Core - Tips and Tricks, Performance Optimization, and Tuning
Bassam Alugili
Hacking your way into Data Science
Sanket Verma
Speed up your .Net Core Website
Sourabh Somani
Azure
Magnus Mårtensson
Demystifying Open Distro for Elasticsearch
Suman Debnath
Future of Data
Shivam Ahuja
Tea Break
gRPC with C# and .Net Core
Mangesh Gaherwar
Panel 1
Essentials of Cloud security
Parveen Malik
Power platform and Dynamics 365
Deepesh Somani
Microservices - the gRPC Way
Viswanatha Swamy
Panel 2
Reserved
Reserved
Closing Note & Prize Distribution
How to handle time zones in C# with NodaTime in global apps
Global applications rarely fail because a developer cannot display a date. They fail when the system quietly confuses an instant, a calendar date, a local clock reading and a time-zone rule. A meeting booked in Sydney can appear on the previous day in London, while a recurring event in Brisbane follows different daylight-saving behaviour from one in Melbourne.
NodaTime gives C# teams a clearer model for these concepts. Its types make temporal intent visible in code, which is especially valuable for cloud services, distributed systems, APIs and applications used across Australia, Asia, Europe and North America. The result is software that handles daylight-saving changes, historical rules and user preferences with fewer hidden assumptions.
Why the standard DateTime model causes trouble
The .NET DateTime type can represent several different ideas, including a UTC value, a local machine value or an unspecified clock reading. The Kind property offers some guidance, but it does not identify a particular time zone such as Australia/Sydney or America/Los_Angeles. A value marked as local refers to the operating system’s zone, which may be a poor assumption for an application hosted in an Azure region.
A DateTime also does not explain whether 2026-10-04 02:30 is a valid time in Sydney. During a daylight-saving transition, some local times never occur, while others occur twice. If an application accepts that value without resolving the ambiguity, it may send a reminder at the wrong instant or create inconsistent records across services.
NodaTime separates these concepts through types such as Instant, LocalDateTime, ZonedDateTime, OffsetDateTime and LocalDate. This design makes a method’s contract easier to understand. A payment expiry can accept an Instant, while a store’s opening time may need a local time plus a zone identifier.
The temporal types that make intent explicit
An Instant represents an unambiguous point on the global timeline. It is a strong choice for audit events, message timestamps, password expiry moments and database values that must mean the same thing everywhere. An instant has no Australian or American display format until it is converted into a time zone.
A LocalDateTime is a calendar and clock reading with no offset or zone attached. It is useful when a user enters “9:00 am on 15 March”, but it is incomplete for scheduling a global event. The application still needs to know whether that time belongs to Perth, Adelaide or another location before it can calculate the corresponding instant.
A ZonedDateTime combines a local date and time with a time-zone definition and the resulting offset. For data that must preserve the original business context, store both the instant and the zone identifier. The instant supports reliable ordering, while the zone lets the application display the event according to the rules selected by the user.
An OffsetDateTime records a date, time and numeric offset, such as +10:00. It is useful when the offset itself is part of a message or protocol, but it does not preserve the full rule set behind a zone. +10:00 cannot tell you whether the original location was Brisbane, Port Moresby or a temporary offset created by a historical rule.
Converting local times safely
Install the NodaTime package through NuGet and use the IANA time-zone database supplied by DateTimeZoneProviders.Tzdb. Australian zones include Australia/Sydney, Australia/Melbourne, Australia/Adelaide, Australia/Brisbane, Australia/Perth and Australia/Darwin. They are not interchangeable: Brisbane does not observe daylight saving, while Sydney and Melbourne do.
using NodaTime;
var provider = DateTimeZoneProviders.Tzdb;
var sydney = provider["Australia/Sydney"];
var local = new LocalDateTime(2026, 7, 15, 9, 30);
var zoned = sydney.AtStrictly(local);
Instant instant = zoned.ToInstant();
AtStrictly is deliberately strict. It throws when a local time is skipped or occurs twice, forcing the application to deal with an invalid or ambiguous booking. That is often the right behaviour for financial transactions or appointments where silently choosing an interpretation would be dangerous.
For user-facing scheduling, use MapLocal when you need to inspect the result and present a deliberate policy. NodaTime also provides AtLeniently, which shifts a skipped time forward and chooses an offset for an ambiguous time. That convenience can be suitable for a casual reminder, but it should be a documented business decision rather than an accidental default.
Designing storage and APIs for international users
Store instants in UTC-oriented form for events that describe something that happened or will happen at a definite moment. NodaTime’s Instant maps naturally to this idea. A database schema can retain an instant, the user’s IANA zone ID and, when relevant, the original local date and time entered by the user.
Recurring events need different treatment. A weekly webinar scheduled for 10:00 am in Melbourne should continue to mean 10:00 am in Melbourne after the daylight-saving transition. Storing only the first UTC occurrence will cause later sessions to drift by an hour. Store the recurrence rule, local time and zone, then calculate each occurrence against current time-zone data.
This matters for Australian customers who work across Melbourne, Brisbane and Perth. A support roster that starts at 8:00 am local time should not be generated from a fixed offset shared by every state. The same principle applies to public holidays, school schedules, retail trading windows and services used during the Sydney–Melbourne business day.
At API boundaries, use ISO 8601 formats and state the meaning of every field. An instant might be sent as 2026-07-15T23:30:00Z, while a scheduled local value might be sent with its zone ID in a separate property. Avoid ambiguous strings such as 15/07/2026 9:30, especially when clients include systems from the United States or Europe.
Handling daylight saving and changing time-zone rules
Daylight saving is a rule change, not a simple offset conversion. In New South Wales, Victoria, Tasmania and the Australian Capital Territory, the clock changes seasonally; Queensland, Western Australia and the Northern Territory generally do not. Lord Howe Island has a 30-minute daylight-saving shift, a useful reminder that code should not assume changes are always one hour.
Time-zone databases are updated when governments alter legislation. A global application should keep its NodaTime package and time-zone data current, then test how updates affect future schedules. Historical appointments may need to retain the original zone and resolved instant so that later rule changes do not rewrite what actually occurred.
A practical rule is to distinguish “the event happened at this instant” from “the business wants this local time in this place”. The first should be rendered from an instant. The second should be resolved using the zone’s rules every time a future occurrence is generated. Mixing these cases is a common source of calendar defects.
Automated tests should cover normal dates, daylight-saving boundaries, ambiguous times and zones without seasonal changes. Include Sydney, Brisbane, Perth and a non-Australian zone in the test suite. If a service runs asynchronously, temporal bugs may surface far from the original conversion; techniques for debugging async code can help trace the request, queue message and scheduled callback together.
Building reliable user experiences
A user should usually choose a time zone through a searchable location or profile setting rather than a raw UTC offset. “UTC+10” does not identify Sydney, Brisbane or Vladivostok, and it cannot express future daylight-saving changes. Store the selected IANA identifier, then display a friendly city label in the interface.
The interface should make the interpretation visible before a user confirms an important event. For example, show “10:00 am, Tuesday 6 October, Melbourne time” and, where useful, show the equivalent time for attendees. This is particularly helpful for Australian teams coordinating with Singapore, London or California, where the relative difference changes during daylight-saving periods.
Be careful with date-only values. A birthday, invoice due date or Australian public holiday is often a LocalDate, not midnight UTC. Converting it through UTC can move it to the previous day for users in Los Angeles or the next day for users in parts of Asia. Preserve date-only business data as date-only data.
For web and mobile clients, keep the server authoritative for booking and conflict checks. The browser can offer a convenient preview, but the server should resolve the selected local time using its trusted time-zone data. Log the input local value, zone ID, resolved instant and rule version where auditability matters.
Implementation checks for production systems
- Use
Instantfor unambiguous moments and audit timestamps. - Store IANA zone IDs rather than fixed UTC offsets.
- Treat recurring schedules as local time plus zone and recurrence rules.
- Test skipped, repeated and non-daylight-saving local times.
User-facing checks for Australian deployments
- Distinguish Sydney or Melbourne time from Brisbane and Perth time.
- Show the zone or city beside important appointment times.
- Keep birthdays, due dates and holidays as
LocalDatevalues. - Recheck future schedules when time-zone data or legislation changes.
Integrating NodaTime across a C# application
Keep temporal conversion near application boundaries. A controller can convert an incoming ISO value into a NodaTime type, while domain services work with Instant, LocalDate or ZonedDateTime instead of passing loosely defined strings. This reduces repeated parsing logic and makes validation consistent across web, mobile and background-processing paths.
For JSON, configure the relevant NodaTime serializers in the API stack and document whether a property is an instant, an offset date-time or a local value. In a message-driven system, include the zone ID for future schedules. Consumers should not infer a user’s zone from the server location, browser locale or Azure hosting region.
Database integration deserves the same discipline. A timestamp column may lose the distinction between UTC and local time if mappings are implicit. Review ORM conversions, precision, null handling and round-trip tests. Verify that a value saved in Sydney and read by a service hosted in Melbourne remains the same instant.
Monitoring can expose temporal defects early. Log ISO 8601 values with offsets, the selected zone ID and a correlation ID. Avoid relying on server-local log formats, because a production incident spanning Sydney, Perth and London becomes much harder to reconstruct when each service writes a different unqualified clock time.
NodaTime does not remove the need for good product decisions, but it makes those decisions explicit in code. Once an application separates instants, local values, offsets and time-zone rules, scheduling becomes easier to test and explain. That foundation supports dependable global features, from Australian customer portals to cloud services serving users across every time zone.
1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032
GENERAL QUERIES
Manish Tewatia
manish@csharpcon.com
+91-9718-431-042
TICKET QUERIES
Atul Gupta
conference@csharpcon.com
+91-9910-125-804