Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Converting date and time to string in Open C++

From Wiki
Jump to: navigation, search
Article Metadata
Tested with
Devices(s): Nokia 6220 Classic
Compatibility
Platform(s): S60 3rd Edition, FP2
Article
Keywords: time_t, tm, stringstream, use_facet, time_put, time_put::put(), time(), localtime(), asctime()
Created: aknyman (30 Sep 2008)
Last edited: hamishwillee (14 Jun 2012)


Contents

Overview

This code snippet shows how to convert a date and time to a string. The easiest way to get this string is to use the library function asctime() from the <ctime> header. The returned string has the following format: "Www Mmm dd hh:mm:ss yyyy". Another possibility is to use the time_put template class from the <locale> header and use a custom formatting for the date and time string.

Note: In order to use this code, you need to install the Open C/C++ plug-in.

This snippet can be self-signed.

MMP file

The following libraries are required:

STATICLIBRARY libcrt0.lib
 
LIBRARY libstdcpp.lib
LIBRARY libc.lib
LIBRARY euser.lib


Source file

#include <iostream>
#include <string>
#include <sstream>
#include <locale>
#include <ctime>
 
using namespace std;
 
string datetime_to_string(const tm& time, const char* format)
{
stringstream datetime;
 
// retrieve the time_put facet installed in the stream
const time_put<char>& writer =
use_facet< time_put<char> >(datetime.getloc());
 
int len = strlen(format);
 
//formats the contents of the tm time into the output stream datetime
if (writer.put(datetime, datetime, ' ',
&time, format, format + len).failed( ))
{
throw runtime_error("formatting date time failed!");
}
 
return datetime.str();
}
 
int main( )
{
string time_string;
time_t time_now = time(NULL);
struct tm * timeinfo;
timeinfo = localtime (&time_now);
 
//-- using the library function asctime()
 
cout << "Current local time and date: " << endl
<< asctime(timeinfo) << endl;
 
//-- using the own function datetime_to_string()
 
/* The list of % format specifiers:
a Abbreviated weekday name
A Full weekday name
b Abbreviated month name
B Full month name
c Date and time
d Day of the month
H Hour of the 24-hour day
I Hour of the 12-hour day
j Day of the year
m Month of the year
M Minutes after the hour
p AM/PM indicator
S Seconds after the minute
U Week of the year (Sunday)
w Day of the week
W Week of the year (Monday)
x Date MM/DD/YY
X Time HH/MM/SS (24-hour)
y Year of the century
Y Year
Z Time zone name
*/

 
try
{
time_string = datetime_to_string(*timeinfo, "%A %B %d %H:%M:%S %Y");
cout << time_string << endl;
 
time_string = datetime_to_string(*timeinfo, "%Y/%m/%d %H:%M:%S");
cout << time_string << endl;
 
time_string = datetime_to_string(*timeinfo, "%x %X");
cout << time_string << endl;
}
catch (const exception& e)
{
cout << "Exception: " << e.what() << endl;
}
 
//getchar();
 
return 0;
}


Postconditions

The current date and time have been converted to four different formats and are shown on the screen.

This page was last modified on 14 June 2012, at 02:06.
96 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×