İlk soru. Nazik olun.
Ben görevler üzerinde çalışmaya harcanan teknisyenlerinin zaman izler yazılım üzerinde çalışıyorum. Yazılım haftanın günleri ve günün saatine göre farklı faturalandırılabilir oranı çarpanları tanımak için geliştirilmiş gerekmektedir. (Örneğin, "Saat ve hafta içi 17:00 sonra bir buçuk.")
Yazılımını kullanarak teknoloji, sadece tarih, onun başlangıç zamanı ve (saat ve dakika) yaptığı stop zamanını giriş için gereklidir. Yazılım oranı çarpanları değiştirmek ne zaman sınırları bölüme zaman girişini kırması bekleniyor. Tek bir zaman giriş Birden fazla güne yayılan izin verilmez.
Burada oran tablonun kısmi örnek. Birinci düzey Dizi anahtarları açıkçası, haftanın gün vardır. Yeni çarpan olarak başladı, ve dizideki sonraki ardışık girişine kadar çalıştığında ikinci düzey Dizi anahtarları günün zamanını temsil eder. Dizi değerleri o zaman aralığı için çarpan vardır.
[rateTable] => Array
(
[Monday] => Array
(
[00:00:00] => 1.5
[08:00:00] => 1
[17:00:00] => 1.5
[23:59:59] => 1
)
[Tuesday] => Array
(
[00:00:00] => 1.5
[08:00:00] => 1
[17:00:00] => 1.5
[23:59:59] => 1
)
...
)
Düz İngilizce, bu zaman-ve-bir buçuk 08:00 gece yarısından itibaren hızını, 8 ila 05:00 düzenli oranı ve 23:59 kadar 5 tekrar zaman-ve-bir-buçuk temsil eder. Bu sonlarının o zaman ikinci rasgele olabilir ve her gün için onları keyfi bir sayı olabilir. (This format is entirely negotiable, but my goal is to make it as easily human-readable as possible.)
Örnek olarak: entry 21:00:00 (09:00) için 15:00:00 (15:00) den Pazartesi günü açmış bir zaman 1x faturalandırılır 2 saat ve 1.5x olarak fatura 4 saat oluşacak. Tek bir saat girişi çoklu sonları yayılan için de mümkündür. Yukarıdaki örnekte rateTable kullanarak, 06:00-21:00 Bir süre giriş 6-8 AM@1.5x, 08:00-17:00 @ 1x ve 5-9 PM@1.5x 3 alt aralıkları olurdu. Buna karşılık, bir zaman sadece giriş 8:15:00-08:30:00 olabilir ve tamamen tek bir çarpan aralığında kapsıyor olması da mümkündür.
Ben gerçekten haftanın bir günü sürebilir bazı PHP kadar kodlama (ya da en azından bir algoritma oluşturulması), bazı yardım, bir başlangıç zamanı ve bir durma zamanı kullanmak ve gerekli subparts içine ayrıştırmak olabilir. Bu çıkış (başlatma, durdurma, çarpanı) üçlüsü için birden fazla giriş oluşan bir dizi olması için ideal olacaktır. Yukarıdaki örnek için, çıkış olacaktır:
[output] => Array
(
[0] => Array
(
[start] => 15:00:00
[stop] => 17:00:00
[multiplier] => 1
)
[1] => Array
(
[start] => 17:00:00
[stop] => 21:00:00
[multiplier] => 1.5
)
)
Ben sadece düz (potansiyel olarak) birden subparts tek bir (başlangıç, durdurma) bölme mantığı etrafında başımı sarmak olamaz.