Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для TheOrsini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2015
    Сообщений
    36
    Репутация:
    3 ±

    Есть ли в Pawn функция, возвращающая день недели

    Как в pawn можно узнать день недели (или его порядковый номер)?

  2. Пользователь сказал cпасибо:
    Salvacore (27.01.2016)
  3. #2
    Аватар для Desulaid
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    660
    Репутация:
    235 ±
    Стоит сначала немного погуглить ...


    Вариант великого короля Pawno скриптинга всея легенда рашн комьюнити

    PHP код:
    stock getDay()
    {
            new 
    g_Date[3], g_Week[10], g_Result;
            
    getdate(g_Date[0], g_Date[1], g_Date[2]); 
            
    g_Result g_Date[2] + (g_Date[1] * 2) + ((g_Date[1] * 1) / 5) + g_Date[0] + (g_Date[0] / 4) - (g_Date[0] / 100) + (g_Date[0] / 400) + 2;
            switch(
    g_Result 7)
            {
                    case 
    0:
                    {
                        
    g_Week "Saturday";
                    }
                    case 
    1:
                    {
                        
    g_Week "Sunday";
                    }
                    case 
    2:
                    {
                        
    g_Week "Monday";
                    }
                    case 
    3:
                    {
                        
    g_Week "Tuesday";
                    }
                    case 
    4:
                    {
                        
    g_Week "Wednesday";
                    }
                    case 
    5:
                    {
                        
    g_Week "Thursday";
                    }
                    case 
    6:
                    {
                        
    g_Week "Friday";
                    }
            }
            return 
    g_Week;

    Вариант OFFREAL

    PHP код:
    stock DayOfWeakName(UTC)
    {
        new 
    dayname[32];
        switch(((
    gettime()+UTC*3600)/86400)%7)
        {
            case 
    0strcat(dayname"Четверг");
            case 
    1strcat(dayname"Пятница");
            case 
    2strcat(dayname"Суббота");
            case 
    3strcat(dayname"Воскресенье");
            case 
    4strcat(dayname"Понедельник");
            case 
    5strcat(dayname"Вторник");
            case 
    6strcat(dayname"Среда");
        }
        return 
    dayname;

    На основе последнего варианта я сделал свой

    PHP код:
    stock GetWeakName(UTCname[12])
    {
        static const
            
    days_weak[][] =
        {
            !
    "Четверг",
            !
    "Пятница",
            !
    "Суббота",
            !
    "Воскресенье",
            !
    "Понедельник",
            !
    "Вторник",
            !
    "Среда"
        
    };
        
    strcat(namedays_weak[(((gettime()+UTC*3600)/86400)%7)]);

    Что такое UTC?
    Последний раз редактировалось Desulaid; 27.01.2016 в 10:28.

  4. Пользователь сказал cпасибо:
    TheOrsini (27.01.2016)
  5. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,114
    Репутация:
    745 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    На основе последнего варианта я сделал свой

    PHP код:
    stock GetWeakName(UTCname[12])
    {
        static const
            
    days_weak[][] =
        {
            !
    "Четверг",
            !
    "Пятница",
            !
    "Суббота",
            !
    "Воскресенье",
            !
    "Понедельник",
            !
    "Вторник",
            !
    "Среда"
        
    };
        
    strcat(namedays_weak[(((gettime()+UTC*3600)/86400)%7)]);

    Что такое UTC?
    Пара косяков есть, поправил:
    PHP код:
    stock GetWeekName(UTCname[], size sizeof(name))
    {
        static const
            
    days_week[][] =
        {
            !
    "Четверг",
            !
    "Пятница",
            !
    "Суббота",
            !
    "Воскресенье",
            !
    "Понедельник",
            !
    "Вторник",
            !
    "Среда"
        
    };

        return
            
    strunpack(namedays_week[(((gettime()+UTC*3600)/86400)%7)], size);

    Но заполнение массива days_week лучше тоже вынести в параметры, чтобы можно было сохранить мультиязычность функции.

    То есть как-то так:
    PHP код:
    enum WeekLang {
        
    WEEK_LANG_ENGLISH,
        
    WEEK_LANG_RUSSIAN,
    }

    static const
        
    gDaysOfWeek[WeekLang][][] = {
            {
                !
    "Thursday",
                !
    "Friday",
                !
    "Saturday",
                !
    "Sunday",
                !
    "Monday",
                !
    "Tuesday",
                !
    "Wednesday"
            
    },
            {    
                !
    "Четверг",
                !
    "Пятница",
                !
    "Суббота",
                !
    "Воскресенье",
                !
    "Понедельник",
                !
    "Вторник",
                !
    "Среда"
            
    }
        };

    stock GetWeekName(UTCname[], const size sizeof(name), const WeekLang:lang WEEK_LANG_ENGLISH)
    {
        return
            
    strunpack(namegDaysOfWeek[lang][((gettime() + UTC 3600) / 86400) % 7], size);

    Последний раз редактировалось ziggi; 27.01.2016 в 11:35.

  6. 6 пользователя(ей) сказали cпасибо:
    $continue$ (27.01.2016)Desulaid (27.01.2016)Nash_Brigers (06.05.2016)Profyan (18.08.2016)TheOrsini (27.01.2016)[ForD] (27.01.2016)
  7. #4
    Аватар для TheOrsini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2015
    Сообщений
    36
    Репутация:
    3 ±
    Благодарю за помощь

  8. Пользователь сказал cпасибо:
    Salvacore (27.01.2016)
  9. #5
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,359
    Репутация:
    768 ±
    Високосные года учитываются?

  10. #6
    Аватар для Desulaid
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    660
    Репутация:
    235 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Високосные года учитываются?
    Вариант OKStyle не учитывает, все остальные - учитывают, если верить форуму.

  11. #7
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,359
    Репутация:
    768 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Вариант OKStyle не учитывает, все остальные - учитывают, если верить форуму.
    А можно узнать, как учитывать високосные года?

  12. #8
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,466
    Репутация:
    265 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    А можно узнать, как учитывать високосные года?
    Не учитывается.
      Открыть/закрыть



  13. #9
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,359
    Репутация:
    768 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Не учитывается.
      Открыть/закрыть


    А я думал мне Untonyst ответит...
    Untonyst, есть что добавить?

  14. #10
    Аватар для Desulaid
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    660
    Репутация:
    235 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    А я думал мне Untonyst ответит...
    Untonyst, есть что добавить?
    Соглашусь, пожалуй. Я тут подумал и, кажется, первый вариант учитывает високосный год.

    - - - Добавлено - - -

    Есть еще вариант

    PHP код:
    stock GetDay(yearmonthdayname[], const size sizeof(name))
    {
        static const
            
    days_week[][] =
        {
            !
    "Понедельник",
            !
    "Вторник",
            !
    "Среда",
            !
    "Четверг",
            !
    "Пятница",
            !
    "Суббота",
            !
    "Воскресенье"
        
    };

        new
            
    = (12 month) / 12,
            
    year a,
            
    month 12 2,
            
    = (7000 day + (y/4) - (y/100) + (y/400) + ((31*m)/12))%7;
            
        return 
    strunpack(namedays_week[d], size);
    }

    main()
    {
        new
            
    name[12],
            
    yearmonthday;
            
        
    getdate(yearmonthday);
        
    GetDay(yearmonthdayname);
        print(
    name);

    Слизал с варианта на PHP :D

 

 
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •