Topic: Дата и время
Не могу найти где эта изменяется, вот я должен руссифицироват и эту. Помогите как всегда
Спасибо.
PvPGN Community Forums |
forums.pvpgn.pro → [RU] The Source Code → Дата и время
Не могу найти где эта изменяется, вот я должен руссифицироват и эту. Помогите как всегда
Спасибо.
Изначально так:
strftime(msgtemp, sizeof(msgtemp), "User was last seen on : %a %b %d %H:%M:%S",tmlogin);
Должно быть примерно так:
// присвоить для week аббревиатуру для недели (%a) из даты tmlogin
char week[3];
strftime(week, sizeof(week), "%a", tmlogin);
// перебрать возможные значения англ. дня недели (Sun, Mon, ...)
// и происвоить для weekday рус. значение
char weekday[2];
switch( week )
{
case "Sun": weekday = "Вс"; break;
case "Mon": weekday = "Пн"; break;
...
case "Thu": weekday = "Чт"; break;
...
}
// аналогично сделать с месяцем
char month[3];
...
// присвоить для daytime день и время ("02 23:25:40")
char daytime[11];
strftime(daytime, sizeof(msgtemp), "%d %H:%M:%S", tmlogin);
// теперь надо положить это всё в конечный msgtemp
_snprintf(msgtemp, sizeof(msgtemp), "Пользователь последний раз был видел в: %s %s %s",
weekday,
month,
daytime);
Естественно, лучше оформить в виде функции, чтобы не плодить одинаковый код.
По теме, работа с датой в си:
publications.gbdirect.co.uk/c_bo … _time.html
%a abbreviated weekday name
%b abbreviated month name
case "Sun": weekday = "Вс";
Хеш-массивов в си нет?
Дней и месяцев не так много, чтоб массивы юзать для этого. Да и хз как эти хеш массивы там делать)
Может просто получить массив чисел для даты (месяц, год итд), а потом их руками перевести в строки?
[note=]1>------ Build started: Project: bnetd, Configuration: Debug Win32 ------
1>Compiling...
1>command.cpp
1>..\..\..\source\src\bnetd\command.cpp(192) : error C2065: 'tmlogin' : undeclared identifier
1>..\..\..\source\src\bnetd\command.cpp(196) : error C2450: switch expression of type 'char [3]' is illegal
1> Integral expression required
1>..\..\..\source\src\bnetd\command.cpp(198) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(198) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(199) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(199) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(200) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(200) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(201) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(201) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(202) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(202) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(203) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(203) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(204) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(204) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(205) : warning C4060: switch statement contains no 'case' or 'default' labels
1>..\..\..\source\src\bnetd\command.cpp(799) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
1>Build log was saved at "file://c:\svn\pvpgn-magic-builder_v1.1\build\src\bnetd\bnetd.dir\Debug\BuildLog.htm"
1>bnetd - 9 error(s), 9 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========[/note]
static void do_whois(t_connection * c, char const * dest)
{
t_connection * dest_c;
char namepart[136]; /* 64 + " (" + 64 + ")" + NUL */
char const * verb;
t_game const * game;
t_channel const * channel;
if ((!(dest_c = connlist_find_connection_by_accountname(dest))) &&
(!(dest_c = connlist_find_connection_by_name(dest,conn_get_realm(c)))))
{
t_account * dest_a;
t_bnettime btlogin;
std::time_t ulogin;
struct std::tm * tmlogin;
if (!(dest_a = accountlist_find_account(dest))) {
message_send_text(c,message_type_error,c,"Неизвестный пользователь.");
return;
}
if (conn_get_class(c) == conn_class_bnet) {
btlogin = time_to_bnettime((std::time_t)account_get_ll_time(dest_a),0);
btlogin = bnettime_add_tzbias(btlogin, conn_get_tzbias(c));
ulogin = bnettime_to_time(btlogin);
if (!(tmlogin = std::gmtime(&ulogin)))
std::strcpy(msgtemp, "Последный раз вас видели ?");
else
std::strftime(msgtemp, sizeof(msgtemp), "Пользователь последний раз был виден в: %a %b %d %H:%M:%S",tmlogin);
} else std::strcpy(msgtemp, "Пользователь не в сети");
message_send_text(c, message_type_info, c, msgtemp);
return;
}
// присвоить для week аббревиатуру для недели (%a) из даты tmlogin
char week[3];
strftime(week, sizeof(week), "%a", tmlogin);
// перебрать возможные значения англ. дня недели (Sun, Mon, ...)
// и происвоить для weekday рус. значение
char weekday[2];
switch( week )
{
case "Sun": weekday = "Вс"; break;
case "Mon": weekday = "Пн"; break;
case "Tue": weekday = "Вт"; break;
case "Wed": weekday = "Ср"; break;
case "Thu": weekday = "Чт"; break;
case "Fri": weekday = "Пт"; break;
case "Sat": weekday = "Сб"; break;
}
Резултат :(
Zikoi5, может сразу создашь тему "я нихрена не умею программировать, напишите мне бесплатно сервер, которым я один буду пользоваться"?
OFF-TOPIC
Я больше не буду задавать вопрос. СПАСИБО ЗА ВСЁ. Особенно к Harpywar.
(без вас я никто)
Мне нужен был чучут помощ по пвпгн и я тут нашол
Я на код си смотрел, они там в си++ уже переделали много вызовов.
strftime > std::strftime
_snprintf > snprintf
В switch оказывается нельзя char arrays напрямую юзать. Вместо него делай if else, или switch, но через массив (наверное, это и имел в виду xpeh)
const char* weekdays[] =
{
"Sun",
"Mon",
"Tue",
Это помимо того, что ты код не туда вставил.
Лучше возьми любую книжку по си++ (с отличиями от си) и напиши несколько мало мальских программ, используя строки, массивы и файлы.
Лучше возьми любую книжку по си++ (с отличиями от си) и напиши несколько мало мальских программ, используя строки, массивы и файлы.
Да они все на русском, а мне на узбекском был бы я читал и посморел много книг, видео уроки ну понял на 10%. карочи мне нужен учител по С++ С# и С. СПАСИБО.
www.google.de/search?q=c%2B%2B+hash+map
Вместо него делай if else, или switch, но через массив (наверное, это и имел в виду xpeh)
Не это.
Он хочет сделать как у меня, вот так:
o_O
o_O
Чего? Кстати терь у меня вот так.
T-MAX wrote:o_O
Чего? Кстати терь у меня вот так.
ТИ МОЖЕЩ ПОМОЧ НАМ ? ДЛЯ САЗДАНИЯ СЕРВЕРА ?
forums.pvpgn.pro → [RU] The Source Code → Дата и время