0 / 0 / 1
Регистрация: 18.05.2018
Сообщений: 114
1

Вычисление даты (ГОРЮ)

31.03.2020, 14:07. Показов 1115. Ответов 1
Метки php (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята не могу сделать правильную проверку сравнения двух дат.
То есть нужно:
Есть дата начала и дата конца передаю их в метод сравнения, чтобы взять МЕСЯЦ, ГОД И ДНИ.
PHP
1
2
3
        $getMonth  = $this->diff(strtotime($date_start), strtotime($date_end), 'month');
        $getYears   = $this->diff(strtotime($date_start), strtotime($date_end), 'year');
        $getDays    = $this->diff(strtotime($date_start), strtotime($date_end), 'days');
МЕТОД
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    function diff($start, $end = false, $type) {
        if(!$end) { $end = time(); }
 
        $start  = date('Y-m-d H:i:s',$start);
        $end    = date('Y-m-d H:i:s',$end);
        $d_start    = new DateTime($start);
        $d_end      = new DateTime($end);
        $diff = $d_start->diff($d_end);
        $result = '';
        switch ($type) {
            case "year":
                $result    = $diff->format('%y');
                break;
            case "month":
                $result    = $diff->format('%m');
                break;
            case "days":
                $result      = $diff->format('%d');
                break;
        }
        return $result;
    }
Мне нужно чтобы были проверки если пользователь ввел даты где ровно 1 год. Если пользователь ввел ровно больше чем 1 года(2,3,4,5). И есть исключение где пользователь ввел ровно 1 месяц или(2,3,4,5,6,7,8,9,10,11 месяцев)

Вот мой код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
        if ($monthId == 0) {
            if ($years == 1) {
                $proc = ($Apm * $An) / 100;
                $Ab = $Apm * $proc;
                $json['success'] = round($Ab, 2);
                echo json_encode($json);
                exit();
            }else
            if ($years > 1) {
                $proc = ($Apm * $An) / 100;
                $Ab = $Apm * $proc * $years;
                $json['success'] = round($Ab, 2);
                echo json_encode($json);
                exit();
            }else
            if ($days < 365) {
                $proc = ($Apm * $An) / 100;
                $Ab = $Apm * $proc / 365 * $days;
                $json['success'] = round($Ab, 2);
                echo json_encode($json);
                exit();
            }else{
                $json['error'] = 'Введите ровное количество дней или лет';
                echo json_encode($json);
                exit();
            }
        }
        if ($monthId > 0) {
            if ($years == 1 && $days == 0 && $month == 0) {
                $proc = ($Apm * $An) / 100;
                $Ab = $Apm * $proc;
                $json['success'] = round($Ab, 2);
                echo json_encode($json);
                exit();
            } else {
                $json['error'] = 'Введите ровно год';
                echo json_encode($json);
                exit();
            }
            if ($years > 1 && $days == 0 && $month == 0) {
                $proc = ($Apm * $An) / 100;
                $Ab = $Apm * $proc * $years;
            } else {
                $json['error'] = 'Введите ровно несколько лет';
                echo json_encode($json);
                exit();
            }
            }else{            
                if ($years == 0 && $days == 0 && ($month > 1 || $month < 12)) {
    
                    $getMonthProcent = $this->Month_model->getMonthFromCalcByID($monthId);
                    $monthProcent = 0;
    
                    if ($month == 1) $monthProcent =  $getMonthProcent->month1;
                    if ($month == 2) $monthProcent =  $getMonthProcent->month2;
                    if ($month == 3) $monthProcent =  $getMonthProcent->month3;
                    if ($month == 4) $monthProcent =  $getMonthProcent->month4;
                    if ($month == 5) $monthProcent =  $getMonthProcent->month5;
                    if ($month == 6) $monthProcent =  $getMonthProcent->month6;
                    if ($month == 7) $monthProcent =  $getMonthProcent->month7;
                    if ($month == 8) $monthProcent =  $getMonthProcent->month8;
                    if ($month == 9) $monthProcent =  $getMonthProcent->month9;
                    if ($month == 10) $monthProcent =  $getMonthProcent->month10;
                    if ($month == 11) $monthProcent =  $getMonthProcent->month11;
    
                    $mP = ($Apm * $monthProcent) / 100;
                    $proc = ($Apm * $An) / 100;
                    $Ab = $Apm * $proc * $mP;
                }else{
                    $json['error'] = 'Введите ровное количество месяцев';
                    echo json_encode($json);
                    exit();
                }
    
                if ($years == 0 && $days != 0 && $month == 0){
                    $json['error'] = 'Введите ровное количество месяцев';
                    echo json_encode($json);
                    exit();
                }else{
                    $json['error'] = 'Введите ровное количество месяцев';
                    echo json_encode($json);
                    exit();
                }
    
            }
    }
Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2020, 14:07
Ответы с готовыми решениями:

Вычисление даты
Имеется задача.Найти заказы, выполненные не позднее, чем через два дня после их получения. У меня...

Вычисление даты
Всем привет! Столкнулся с проблемой, задали задание на вычитание точной даты от исходной. Задача:...

Вычисление даты
Нужна программа,которая сможет вычислить дату.Например: дана дата(20 декабря),нужно определить...

вычисление даты
Есть дата например 31.12.2013. Реализуйте средствами языка JavaScript скрипт, который будет...

1
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,795
31.03.2020, 16:24 2
Лучший ответ Сообщение было отмечено Тигран Саркисян как решение

Решение

PHP
1
2
3
4
5
            if ($days < 365) {
              ...
            }else{
             //Такой кейс вообще возможжен?
            }
Вроде как только наберется полный месяц, месяц будет+1, а день сново 0

В чем собственно вопрос основной? Это не работает или как организовать код красивее?
0
31.03.2020, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2020, 16:24
Помогаю со студенческими работами здесь

Вычисление даты
Имеется кол-во часов нагрузки в виде часов к примеру: &quot;лекций=10&quot;, &quot;лаб=10&quot;, &quot;пз=10&quot;, которые между...

Вычисление даты
Нужна помошь! Имеется 2 таблицы. Поля первой таблицы: Товар(числовое), тип(числовое), дата,...

Вычисление даты и времени
Даны дата и время въезда и выезда. Каким образом можно вычислить время пребывания на стоянке?...

Вычисление даты числа
Написал программу вычисления даты числа с учетом того, что первое января каждого года всегда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru