2015-01-14 2 views
0

Я использую следующий код для установки времени в контроле Даты в MFC с использованием C++Получить текущее время в мм/дд/гггг в C++

CTime date; 
date = date.GetCurrentTime(); 
this->m_headerDate.SetTime(&date); 

Это позволит получить даты и установите его на контроль в любом формате, который использует пользовательская машина. Но я хочу установить его в формате ТОЛЬКО мм/дд/гггг. Должен быть какой-то способ сделать это в MFC. Существуют ли какие-либо служебные функции для этого?

Спасибо,

+1

Почему бы вам не использовать библиотеку ctime уже вам дано –

ответ

1

Если вы говорите о получении конкретного текстового представления даты/времени, вы можете использовать strftime() для форматирования даты многих различных способов, в том числе один, указанные в вашем вопросе.

Вам понадобится переменная типа time_t с использованием средств в заголовке ctime. Поэтому вы можете переключиться на использование тех времен, или я верю, что CTime::GetTime() предоставит вам один.

Однако, если вы говорите о принуждении управления, чтобы отобразить его дату/время в определенном формате, это свойство самого элемента управления. Например, CDateTimeCtrl предоставляет метод SetFormat(), который будет изменять способ отображения его данных.

+0

, если это Strptime() есть в другой библиотеке? Я предпочитаю делать это с CTIME. Я обнаружил функцию в CTIME под названием Format, с которой я играю, если могу получить желаемый формат независимо от даты системы –

+0

@Sri, это _standard_ C++, вам просто нужно включить заголовок. И вы можете продолжать использовать 'CTime', так как он имеет функцию, которая дает вам эквивалент' time_t'. – paxdiablo

1

Без MFC:

#include <iostream> 
#include <ctime> 

using namespace std; 

int main() { 
    const int MAXLEN = 80; 
    char s[MAXLEN]; 
    time_t t = time(0); 
    strftime(s, MAXLEN, "%m/%d/%Y", localtime(&t)); 
    std::cout << s << '\n'; 
} 

Compiled Code

С MFC:

Эта функция форматирует дату как дату строки для заданной локали. Функция форматирует либо заданную дату, либо локальную системную дату.

int GetDateFormat(
    LCID Locale, 
    DWORD dwFlags, 
    CONST SYSTEMTIME* lpDate, 
    LPCTSTR lpFormat, 
    LPTSTR lpDateStr, 
    int cchDate 
); 

change LPCTSTR lpFormat to MM:dd:yyyy 
0

Здесь я храню значение в CString переменной
Попробуйте этот код:

CString strTime; 
CTime date; 
date = GetCurrentTime(); 
strTime = date.Format(_T("%m/%d/%Y")); 
0

Я нашел способ сделать это ... не уверен, если это самый простой способ, хотя Поскольку у нас уже есть элемент управления datetime. Все, что мы можем сделать, это просто использовать функцию Setformat для DatetimeControl. ПФБ пример этого

CDateTimeCtrl m_DateTimeCtrl; 
    m_DateTimeCtrl.SetFormat(_T("MM/dd/yyyy")); 

выше будет установить его в формат 01/14/2015 которого желательно. Благодаря Paxdiablo, Himanshu и Irrational Person для входных данных. Они указали мне в правильном направлении с разными вариантами.

Смежные вопросы