api / mbed / trunk / rtc_time

time

Implementation of the C time.h functions

Provides mechanisms to set and read the current time, based on the microcontroller Real-Time Clock (RTC), plus some standard C manipulation and formating functions.

Example

#include "mbed.h"

int main() {
    set_time(1256729737);  // Set RTC time to Wed, 28 Oct 2009 11:35:37

    while(1) {
        time_t seconds = time(NULL);

        printf("Time as seconds since January 1, 1970 = %d\n", seconds);

        printf("Time as a basic string = %s", ctime(&seconds));

        char buffer[32];
        strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
        printf("Time as a custom formatted string = %s", buffer);

        wait(1);
    }
}
timeImplementation of the C time.h functions
Functions
timeGet the current time
set_timeSet the current time
mktimeConverts a tm structure in to a timestamp
localtimeConverts a timestamp in to a tm structure
ctimeConverts a timestamp to a human-readable string
strftimeConverts a tm structure to a custom format human-readable string

Functions

time

time_t time(time_t *t)

Get the current time

Returns the current timestamp as the number of seconds since January 1, 1970 (the UNIX timestamp).  The value is based on the current value of the microcontroller Real-Time Clock (RTC), which can be set using set_time.

Example

#include "mbed.h"

int main() {
    time_t seconds = time(NULL);
    printf("It is %d seconds since January 1, 1970\n", seconds);
}

Variables

tPointer to a time_t to be set, or NULL if not used
returnsNumber of seconds since January 1, 1970 (the UNIX timestamp)

set_time

void set_time(time_t t)

Set the current time

Initialises and sets the time of the microcontroller Real-Time Clock (RTC) to the time represented by the number of seconds since January 1, 1970 (the UNIX timestamp).

Example

#include "mbed.h"

int main() {
    set_time(1256729737); // Set time to Wed, 28 Oct 2009 11:35:37
}

Variables

tNumber of seconds since January 1, 1970 (the UNIX timestamp)

mktime

time_t mktime(struct tm *t)

Converts a tm structure in to a timestamp

Converts the tm structure in to a timestamp in seconds since January 1, 1970 (the UNIX timestamp).  The values of tm_wday and tm_yday of the tm structure are also updated to their appropriate values.

Example

#include "mbed.h"

int main() {
    // setup time structure for Wed, 28 Oct 2009 11:35:37
    struct tm t;
    t.tm_sec = 37;    // 0-59
    t.tm_min = 35;    // 0-59
    t.tm_hour = 11;   // 0-23
    t.tm_mday = 28;   // 1-31
    t.tm_mon = 9;     // 0-11
    t.tm_year = 109;  // year since 1900

    // convert to timestamp and display (1256729737)
    time_t seconds = mktime(&t);
    printf("Time as seconds since January 1, 1970 = %d\n", seconds);
}

Variables

tThe tm structure to convert
returnsThe converted timestamp

localtime

struct tm *localtime(const time_t *t)

Converts a timestamp in to a tm structure

Converts the timestamp pointed to by t to a (statically allocated) tm structure.

Example

#include "mbed.h"

int main() {
    time_t seconds = 1256729737;
    struct tm *t = localtime(&seconds);
}

Variables

tPointer to the timestamp
returnsPointer to the (statically allocated) tm structure

ctime

char *ctime(const time_t *t)

Converts a timestamp to a human-readable string

Converts a time_t timestamp in seconds since January 1, 1970 (the UNIX timestamp) to a human readable string format.  The result is of the format: “Wed Oct 28 11:35:37 2009\n”

Example

#include "mbed.h"

int main() {
    time_t seconds = time(NULL);
    printf("Time as a string = %s", ctime(&seconds));
}

Variables

tThe timestamp to convert
returnsPointer to a (statically allocated) string containing the human readable representation, including a ‘\n’ character

strftime

size_t strftime(char *buffer,
size_t max,
const char *format,
const struct tm *t)

Converts a tm structure to a custom format human-readable string

Creates a formated string from a tm structure, based on a string format specifier provided.

Format Specifiers

%SSecond (00-59)
%MMinute (00-59)
%HHour (00-23)
%dDay (01-31)
%mMonth (01-12)
%Y/%yYear (2009/09)
%A/%aWeekday Name (Monday/Mon)
%B/%bMonth Name (January/Jan)
%I12 Hour Format (01-12)
%p”AM” or “PM”
%XTime (14:55:02)
%xDate (08/23/01)

Example

#include "mbed.h"

int main() {
    time_t seconds = time(NULL);

    char buffer[32];
    strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
    printf("Time as a formatted string = %s", buffer);
}

Variables

bufferString buffer to store the result
maxMaximum number of characters to store in the buffer
formatFormat specifier string
tPointer to the tm structure to convert
returnsNumber of characters copied
time_t time(time_t *t)
Get the current time
void set_time(time_t t)
Set the current time
time_t mktime(struct tm *t)
Converts a tm structure in to a timestamp
struct tm *localtime(const time_t *t)
Converts a timestamp in to a tm structure
char *ctime(const time_t *t)
Converts a timestamp to a human-readable string
size_t strftime(char *buffer,
size_t max,
const char *format,
const struct tm *t)
Converts a tm structure to a custom format human-readable string