Search Results for

    Show / Hide Table of Contents

    Date and Time

    About this document

    This document describes how .NET nanoFramework handles Date & Time and the available option regarding this matter.

    UTC and local time

    Time (and date) is fundamental for the inner works of .NET nanoFramework. But an application running on top of it can make use of it, or not, thus making relevant the discussion and evaluation of the related features and associated code. Because .NET nanoFramework runs on constrained resources platforms inclusion of features that increase both RAM and FLASH usage has to be considered and evaluated.

    DateTime supports the use of Local and UTC times by its DateTime.Kind property. Supporting this requires adding several blocks such as: an API for setting the platform timezone, handling the huge number of available timezones, managing the daylight savings changes, manage conversion to/from the different kinds, etc.

    Considering all the above, .NET nanoFramework addresses this matter providing the absolute minimal viable options. There is support for DateTime (obviously) but all DateTime are considered UTC. There is no support for DateTime.Kind.Local, setting timezone or converting to/from the different kinds. If an application requires this, it has to implement it at its own level.

    Time source

    The time base source is, by default, the SysTick available in the CMSIS RTOS API. This is the source of the time when a DateTime object is instantiated.

    Because almost all hardware platforms capable of running .NET nanoFramework include an hardware RTC this peripheral can be used as the source for time objects. Note that for all other internals of .NET nanoFramework the CMSIS RTOS API SysTick keeps being used as the time base.

    This option is exposed to the board designer by the NF_FEATURE_RTC configuration option. Setting it to ON when calling CMake brings in the RTC subsystem and all the calls to DateTime make use of the time base provided by this peripheral.

    RTC and hardware

    Leveraging the RTC hardware peripheral allows several interesting/valuable features:

    • more accurate timekeeping (when compared with a regular timer);
    • possibility for timekeeping in sleep/deep sleep modes;
    • setting alarms to wake-up the system at a future time;
    • Improve this Doc
    In This Article
    Back to top Copyright © 2023 nanoFramework Contributors
    Generated by DocFX