__DATE__
- константа времени компиляции. Это дата компиляции файла .cpp
. Это не то, что вам нужно в данной ситуации.
RTL C ++ Builder имеет функцию Sysutils::Date()
, которую вы можете использовать вместо нее, например:
#include <System.SysUtils.hpp>
label1->Text = _T("Data: ") + Date().DateString();
Date()
возвращает TDateTime
, представляющее текущую системную дату (если вы хотите также включить время, используйте вместо этого Sysutils::Now()
). Его метод DateString()
форматирует TDateTime
в String
с использованием настроек локали пользователя. Если вы хотите отформатировать TDateTime
самостоятельно, вы можете использовать для этого его метод FormatString()
, например:
#include <System.SysUtils.hpp>
label1->Text = _T("Data: ") + Date().FormatString(_T("yyyy-mm-dd"));
or:
label1->Text = Date().FormatString(_T("'Data: 'yyyy-mm-dd"));
Если вам нужно более стандартное решение C ++, посмотрите функции std::time()
и std:::strftime()
, например:
#include <ctime>
std::time_t now_c = std::time(nullptr);
std::tm now_tm = *std::localtime(&now_c);
char buffer[11] = {};
std::strftime(buffer, sizeof(buffer), "%Y-%m-%d", &now_tm);
label1->Text = _T("Data: ") + String(buffer);
or:
label1->Text = String().sprintf(_T("Data: %s"), buffer);
Или посмотрите библиотеку <chrono>
, представленную в C ++ 11, например std::chrono::system_clock
, например:
#include <chrono>
#include <ctime>
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::tm now_tm = *std::localtime(&now_c);
char buffer[11] = {};
std::strftime(buffer, sizeof(buffer), "%Y-%m-%d", &now_tm);
label1->Text = _T("Data: ") + String(buffer);
or:
label1->Text = String().sprintf(_T("Data: %s"), buffer);
Альтернативно:
#include <chrono>
#include <ctime>
#include <sstream>
#include <iomanip>
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::tm now_tm = *std::localtime(&now_c);
std::wostringstream oss;
oss << L"Data: " << std::put_time(&now_tm, L"%Y-%m-%d");
label1->Text = oss.str().c_str();