import React from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import Home from "./Home";
import About from "./About";
const data = [
{
path: "/",
component: <Home />
},
{
path: "/about",
component: <About />
}
];
export default function App() {
const routes = data.map(({ path, component }, key) => (
<Route exact path={path} element={component} key={key} />
));
return (
<div className="App">
<h1>React App</h1>
<Router>
<Routes>{routes}</Routes>
</Router>
</div>
);
}
const
a atanan değer değiştirilemez onun yerine let
kullan.
daha iyi anlamak açısından https://youtu.be/kjLv-sIyVa8
let NowDate = ("0" + date.getDate()).slice(-2)+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
let LaterDate = ("0" + (date.getDate()+1)).slice(-2)+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
$("#dates").Zebra_DatePicker({
NowDate = ("0" + date.getDate()).slice(-2)+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
LaterDate = ("0" + (date.getDate()+1)).slice(-2)+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
})
function xxx(){
console.log(NowDate, LaterDate);
}
@0kan87
foreach ile de yapılabilir ama bu şekilde daha az kod yazıp daha temiz kod oluyor bence :)
fonksiyonu parametre olarak girme olayını sormuşsun oda array_filter()
fonksiyonunun 2ci paremetresi callback function
olduğu için ister dışarıda fonksiyonu yazıp oraya adını girebilirsin veya parametre olarak direk anonim bir fonksiyon yazabilirsin.
$array = []; // tüm konular
$sabit = array_filter($array, function($value, $key){
return $value['sabit'] == 1;
},ARRAY_FILTER_USE_BOTH);
print_r($sabit);
function calculate(string $start, int $count, int $time, array & $k): string
{
$to = $count * $time;
$workingDays = [1, 2, 3, 4, 5];
$from = new DateTime($start);
$interval = new DateInterval("PT1S");
$r = ($to * 10) + 172800;
$periods = new DatePeriod($from, $interval, $r);
$sec = 0;
$x = -1;
$z = 0;
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$h = intval($period->format('H'));
$m = intval($period->format('i'));
if($period->format('N') != $x){
$x = $period->format('N');
if($z > 0){
array_push($k, $count - $z);
$z = 0;
}
}
if($sec >= $to){
return $period->format('Y-m-d H:i:s');
break;
}
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
if($sec % $time == 0){
$z++;
}
}
}
function calculate(string $start, int $count, int $time, array & $k): string
{
$to = $count * $time;
$workingDays = [1, 2, 3, 4, 5];
$from = new DateTime($start);
$interval = new DateInterval("PT1S");
$r = ($to * 10) + 172800;
$periods = new DatePeriod($from, $interval, $r);
$sec = 0;
$x = -1;
$z = $count;
$f = new DateTime($start);
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$h = intval($period->format('H'));
$m = intval($period->format('i'));
if($period->format('N') != $x){
$e = new DateTime($period->format('Y-m-d')." 17:30:00");
$diff = $e->getTimestamp() - $f->getTimestamp();
$d = $e->modify('+1 days');
if (!in_array($d->format('N'), $workingDays)){
$d = $d->modify('+2 days');
}
$f = new DateTime($d->format('Y-m-d')." 07:15:00");
$x = $period->format('N');
$z -= ($diff / $time);
if($z > 0){
array_push($k, $z);
}
}
if($sec >= $to){
return $period->format('Y-m-d H:i:s');
break;
}
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
}
}
$baslangic_tarihi = "2021-12-01 08:00:00";
$adet = 360;
$sure = 100;
$kalan = [];
echo calculate($baslangic_tarihi, $adet, $sure, $kalan)."<br>";
print_r($kalan);
/**
* 2021-12-02 09:00:00
* Array ( [0] => 18 )
*/
burada kalanları array olarak alabilirsin.
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
$r = ($to * 10) + 172800;
buradaki 172800
2günün sn olarak karşılığı araya cumartesi pazar tatili girerse foreach()
döngüsü durmasın diye.
şuan bunu çok açıklayamadım biliyorum ama nasıl açıklayacağımıda bilemedim.
Cumartesi, Pazar ve molalardan dolayı iş süresinden fazla değer girmek gerekiyordu bu yüzden öyle bişey yaptım.
Ek mola yazmışsın o kısmı tam olarak anlamadım şuan yazdığın molaları zaten hesaplıyor.
Örnek:
10(600dk) saatlik bir iş var diyelim saat 8 de başlıyor.
Saat 8den 17:30 a kadar toplamda 495dk çalışma saati var(molalar çıkartılınca) 600-495 = 105dk
ertesi gün 7:15 te başlayıp 105 dk 09:00 da iş bitiyor.
// 36000 sn = 10saat
echo calculate("2021-12-01 08:00:00", 36000); // 2021-12-02 09:00:00