الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن التحويل صيغة وقت من "ثواني" إلى hh:mm:ss ?

مغلق
بدأه طالب الخبرة في 2 مارس 2007 · 5 رد · 903 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته .. أما بعد

حياكم جميعا..

أخواني الكرام.. وعلى عجل.

أتمنى أنكم تساعدوني في ايجاد طريقة لتحويل قيمة معينة من الثواني.. إلى الشكل التالي : hh:mm:ss ( ساعات ثم دقائق ثم ثواني )

طبعا العملية ( بشكل ما ) بسيطة.. وهي كلها عمليات قسمة وضرب.. ولكن فيه مشكلة بالنسبة لي بما أنه مالي خبرة!

أنا فكرت على سبيل المثال.. أقول ( الساعات ) = الثواني قسمة 3600... من دون النظر إلى الباقي..

ولكن فيه مشكلة!

الناتج حيكون على سبيل المثال : 7!!

وأنا أحتاج الناتج يكون : 07 ... الفرق : المطلوب ناتج مكون من خانتين وليس خانة واحدة!

أتمنى لو تفيدونا بالموضوع :)

أخوووكم طالب الخبرة

#2

لقيت الحل.. أللللللللللللف شكر :)

ومعذرة على العجلة!

أتمنى من المشرف حذف الموضوع..

وشكراااااا

#3

الأخ الفاضل ...

لكى يستفيد الجميع ، شارك بما توصلت إليه من حلول، كذلك يمكنك أستخدام:

Private Sub Form_Load()
	MsgBox GetHMS_Time(3660)
End Sub

Private Function GetHMS_Time(sec As Long) As String
	Dim h As Integer
	Dim m  As Integer
	Dim s As Integer

	h = Int(sec / (60 * 60))
	m = Int((sec Mod (60 * 60)) / 60)
	s = (sec Mod (60 * 60)) Mod 60
	GetHMS_Time = h & ":" & m & ":" & s
End Function

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#4

حياك Eng. Usama El-Mokadem.. وألف شكر على ردك أخي الكريم..

اممممم.. هذا اللي كنت ناوي أسويه.. ولكن للأسف واجهتني مشاكللللللل!!!

عرفت الطريقة.. ولكن تطبيقها كان معقد بشكل كبير!!

أنا ما أحب الفيجوال بيسك من أساسها.. بس مضطر أستخدمها!

البرنامج هذا بأي لغة ثانية ما ياخذ دقايق!!

على كل.. للأسف ما وصلت لحل باقي وأتمنى لو أقدر ألقى مساعدة...

أنا سويت تقريبا نفس الكود اللي قمت أنت بكتابته أخي الكريم.. ولكن!

ما زالت تواجهني مشاكل..

أولها.. أبغى في حالة الساعات = 6 مثلا.. يتم كتابتها على شكل 06

وهكذا!

ممكن أعملها بدالة if لتغيير كل رقم.. أو cases.. ولكن ودي بطريقة عملية!!

قمت بتعديل الكود.. على سبيل المثال خانة الدقائق على الشكل التالي :

m = Format(Int((sec Mod (60 * 60)) / 60), "00")

ولكن نفس المشكلة ما زالت موجودة!!

مشكلة أخرى.. كثير من الأحيان يقوم بالتقريب في حين لا أريد القيام به!!

أقصد بذلك التقريب العشري!

على كل.. أتمنى أجد حل للمشكلة السابقة.. وهي عرض الأرقام على شكل خانتين

واذا أمكن.. عرض خانة أجزاء الثانية من 1000.. سأحاول اضافتها في الكود السابق وان شاء الله يمشي الحال!!!

أخووووووك طالب الخبرة

#5

رد سريع..

وأخيرا تم حل المشكلة الأولى!

وهذا الكود للافادة :

Private Function GetHMS_Time(sec As Long) As String
	Dim h As String
	Dim m  As String
	Dim s As String

	h = Int(sec / (60 * 60))
	m = Int((sec Mod (60 * 60)) / 60)
	s = (sec Mod (60 * 60)) Mod 60

	If Len(h) = 1 Then h = "0" & h
	If Len(m) = 1 Then m = "0" & m
	If Len(s) = 1 Then s = "0" & s


	GetHMS_Time = h & ":" & m & ":" & s
End Function

وللتوضيح.. هذي طريقة مبتدئين مثلي.. يعني المفروض تنحل المشكلة بطريقة أفضل ولكن هذا اللي قدرت عليه!

باقي الآن حل المشكلة الثانية.. وهي عرض أجزاء الثانية مع ( الغاء ) تقريب الاعداد العشرية في الثواني

شاكر لكم تعاونكم

أخوكم طالب الخبرة (h)

#6

الأخ الفاضل ...

Private Sub Form_Load()
	MsgBox GetHMS_Time(3661.255253)
End Sub

Private Function GetHMS_Time(sec As Double) As String
	Dim h As Integer
	Dim m  As Integer
	Dim s As Integer

	h = Int(sec / (60 * 60))
	m = Int((sec Mod (60 * 60)) / 60)
	s = (sec Mod (60 * 60)) Mod 60

	GetHMS_Time = Format(h, "00") & ":" & Format(m, "00") & ":" & Format(s, "00") & ":" & Round(sec - Int(sec), 3)
End Function

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…