הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 31-10-11, 03:31   # 1
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

חישוב שעות מתמטי? php/js

הי!

מצאתי משהו קצת מאתגר ואני די מתקשה פה במציאת פיתרון.

אני מנסה לדעת כמה פעמים נכנסים 45 דקות, בסכום השעות שבין 08:10 - 17:20

נראה לי שהבנתי את סדר הפעולות, אך עם זאת אינני מצליח לגלות את הנוסחה לשם כך.

זו רק השערה, אך אני חושב שסדר הפעולות הוא:

1. חישוב מספר השעות שבין 08:10 - 17:20
2. הכפלת התוצאה ב60
3. חילוק התוצאה ב45

לא משנה אם הפתרון יהיה בJS\PHP, אך שעדיף שיהיה בPHP..

יש למישהו מושג?
אני מקווה בכלל שמישהו הבין קצת קשה לי להסביר את זה
יכול להיות בכלל שהתשובה כל כך פשוטה, שהשעה המאוד מאוחרת כרגע מערפלת לי אותה :S

Last edited by trupix; 31-10-11 at 03:39..
  Reply With Quote
ישן 31-10-11, 07:46   # 2
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

מה שאמרת נכון, הכפלה ב60 תהפוך את השעות לדקות, חילוק ב45 יתן לך כמה פעמים 45 נכנס בדקות הללו, אם אתה רוצה גם התייחסות לדקות אתה עושה את ההפרש ביניהן ומוסיף לתוצאת הכפל שלך

Last edited by Xinxy; 31-10-11 at 07:54..
  Reply With Quote
ישן 31-10-11, 10:28   # 3
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 35
הודעות: 178

daNN לא מחובר  

JavaScript:
קוד:
	<script type="text/javascript">
		var hour1 = new Date(); // התאריך הנוכחי
		var hour2 = new Date(); // התאריך הנוכחי
		
		hour1.setHours(20); // אתחול השעה
		hour1.setMinutes(45); // אתחול הדקות
		
		hour2.setHours(18); // אתחול השעה
		hour2.setMinutes(45); // אתחול הדקות
		
		var diff = Math.abs( hour1 - hour2 ); // ערך אבסולוטי של ההפרש 
		
		document.write(diff/1000/60/45);
	</script>
Php:
קוד:
	<?php
		$hour1 = mktime(20,45,0,0,0,0);
		$hour2 = mktime(18,45,0,0,0,0);
		
		$diff = abs($hour1 - $hour2);
		
		echo $diff/60/45;
	?>

Last edited by daNN; 31-10-11 at 10:35..
  Reply With Quote
ישן 31-10-11, 13:41   # 4
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

תודה רבה ידידי!

ציטוט:
נכתב במקור על ידי daNN צפה בהודעה
JavaScript:
קוד:
	<script type="text/javascript">
		var hour1 = new Date(); // התאריך הנוכחי
		var hour2 = new Date(); // התאריך הנוכחי
		
		hour1.setHours(20); // אתחול השעה
		hour1.setMinutes(45); // אתחול הדקות
		
		hour2.setHours(18); // אתחול השעה
		hour2.setMinutes(45); // אתחול הדקות
		
		var diff = Math.abs( hour1 - hour2 ); // ערך אבסולוטי של ההפרש 
		
		document.write(diff/1000/60/45);
	</script>
Php:
קוד:
	<?php
		$hour1 = mktime(20,45,0,0,0,0);
		$hour2 = mktime(18,45,0,0,0,0);
		
		$diff = abs($hour1 - $hour2);
		
		echo $diff/60/45;
	?>
  Reply With Quote
ישן 31-10-11, 14:01   # 5
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

הקוד לא עובד

הוא מציג נתון לא הגיוני


קוד:
	<?php
		$hour1 = mktime(08,30,0,0,0,0);
		$hour2 = mktime(16,45,0,0,0,0);
		
		$diff = abs($hour1 - $hour2);
		
		echo $diff/60/45;
	?>
שים לב ששיניתי את הנתונים
תחילת ספירה מ08:30 בבוקר, וסיום ב16:45

הקוד הנ"ל מציג את התוצאה 21.6666666667, כשלמעשה התשובה היא 12

Last edited by trupix; 31-10-11 at 14:05..
  Reply With Quote
ישן 31-10-11, 15:46   # 6
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 35
הודעות: 178

daNN לא מחובר  

PHP מתייחסת למספרים שמתחילים ב0 כמספרים בבסיס 8.
פשוט שנה את 08 ל8...
  Reply With Quote
ישן 31-10-11, 18:08   # 7
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

צדקת. הוספת הסיפרה 0 גרמה לפונקציה "להתבלבל". הורדתי את ה0 וכעת הותצאה זהה לקוד הJS. תודה.

עם זאת אינני מצליח להסתדר בבניית המערכת.


המטרה שלי היא כזאת:

אני נותן לגולש לבחור שעת התחלה,(נניח 8:30) ושעת סיום (נניח 17:45)

עכשיו אני רוצה להציג רשימה עם כל השעות האלו, במרווח של 45 דקות (המרווח משתנה עפ"י הגולש)

כלומר שתיהיה בסוף רשימה כזאת:

8:30
9:15
10:00
...
...
17:45

אז הצלחתי ליצור לולאה באורך של deff שנתת, אבל אין לי מושג איך לפלוט את השעות במרווח שהמשתמש הזין

בתקווה שהצלחתי להסביר כמו שצריך, ובהערכה רבה.
תודה.
  Reply With Quote
ישן 31-10-11, 18:24   # 8
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 35
הודעות: 178

daNN לא מחובר  

קודם כל הספרה 0 לא גרמה לפונקציה להתבלבל...
תיכנות זה דבר קבוע והמחשב ממש לא מתבלבל.
ציון הספרה 0 לפני מספר גורמת לPHP לחשוב שהמספר הוא בבסיס 8. (ולא בבסיס 10 שאנחנו רגילים אליו מחיי היום יום).

דבר שני תעשה לולאה שתקפוץ ב45 דק' כל פעם לא הבנתי מה הבעיה.. ?
תחקור על הפונקציות mktime,Date,strtotime בPhp
זה אמור להסביר איך להקפיץ את הזמן ב45 דקות כל פעם..
  Reply With Quote
ישן 31-10-11, 20:06   # 9
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 564

Itay לא מחובר  

לא הכי יעיל, אבל עושה את העבודה בצורה פשוטה
PHP קוד:
<?php
$startTime 
strtotime("8:30"); // אתה מגדיר זמן התחלה בפורמט יוניקס
$endTime strtotime("17:45"); // כנ"ל לגבי זמן סיום
for($i=$startTime;$i<=$endTime;$i+=(45*60)) // אתה מריץ לולאה מהזמן התחלה עד שהאינדקס קטן או שווה לזמן סיום, ומעלה כל פעם ב-45 דקות (החישוב הוא בשניות)
{
    echo 
date("H:i",$i).'<br />'// מציג את השעה והדקות מהתאריך
}
?>
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 19:23.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ