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

    Статус
    Оффлайн
    Регистрация
    29.09.2015
    Сообщений
    36
    Репутация:
    3 ±
    Так какой вариант лучше использовать? Просто для меня еще сложно разбираться в таком коде, не могу определить.

  2. Пользователь сказал cпасибо:
    Salvacore (27.01.2016)
  3. #12
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Соглашусь, пожалуй. Я тут подумал и, кажется, первый вариант учитывает високосный год.

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

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

    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-3 дня.
    Сделал что-то типо костыля, критика приветствуется, пока проблем не обнаружил.
     Функция
    PHP код:
    stock GetNumberDay(yearmonthday)
    {
        new 
            
    = (12 month)/12,
            
    year a,
            
    month 12 2,
            
    = (7000 day + (y/4) - (y/100) + (y/400) + ((31*m)/12)) % 7;
        if(!(
    year 4) && (year/400) != && (month == || month == 2)) // Если год високосный и месяц - январь/февраль, то к дню нужно прибавить ещё 1 день
            
    return (== d+1);
        else 
        {
            if(
    month == || month == 2// Если год невисокосный и месяц - январь/февраль, нужно прибавить 2 дня
                
    return (d==d+2);
        } 
        return 
    d
    }

     Использование

    PHP код:
    static const DayNames[][] = {
        
    "Воскресенье"// Именно воскресенье должно быть первым (нулевым) в массиве 
        
    "Понедельник",
        
    "Вторник",
        
    "Среда",
        
    "Четверг",
        
    "Пятница",
        
    "Суббота"
    };
    main()
    {
        new 
    yearmonthday;
        
    getdate(yearmonthday);
        
    printf("Сегодня %s"DayNames[GetNumberDay(yearmonthday)]);

    Последний раз редактировалось _lizard; 18.08.2016 в 12:47.

  4. #13
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Из официальной документации к Pawn:
    PHP код:
    weekday(daymonthyear)
    {
        if (
    month <= 2)
            
    month += 12, --year;
        new 
    year 100;
        new 
    year 100;
        return (
    day + (month+1)*26/10 j/e/2*e) % 7;


  5. Пользователь сказал cпасибо:
    _lizard (19.08.2016)
 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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