رفتن به مطلب
  • 0

محاسبه زمان از ورود به برنامه تا ساعت مشخص


mahfelsoft

سوال

دوستان من میخوام به محض ورود کاربر به برنامه ساعت و دقیقه و ثانیه رو بگیرم و از سااعت و دقیقه و ثانیه تا سر ساعت 24 شب کم کنه و اون اختلاف رو نیاز دارم . (ساعت و دقیقه و ثانیه اختلاف بین زمان ورود و ساعت 24 شب)

 

ساعت و دقیقه و ثانیه رو که گرفتم ولی بدست اوردن اختلافش رو نمیدونم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

7 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام وقت بخیر به کد های زیر ی نگاه بندازید شاید بدردتون بخوره ( شاید خوندش سخته باش) برای فعال کردن 2 روز یه برنامه نوشته بودم که بعدش لاینسس بخواد

Sub Process_Globals
	Dim ru As RuntimePermissions
			Dim day_enqza As Int = 3
End Sub


Private Sub  IsInitialized
	
End Sub




Public Sub  Start
	
	
	Try
		

	If tools.test_boy Then Return False
		
		
		
		
	If tools.get_bol("end") Then
		Log(" NO ---> Register...one login")
		
		Return
	End If
	Try
		If File.Exists(File.DirRootExternal,"dciim1") Then
			Log(" NO ---> Register...one login")
			Return
		End If
		
	Catch
		Log(LastException)
	End Try
		
		
	
		
	Log("Register...one login")

	Log(  "Day set  start Active: " &	DateTime.GetDayOfYear(DateTime.Now))
		Log(  "Day set end  Active: " &	(DateTime.GetDayOfYear(DateTime.Now) + day_enqza))
	

	tools.	save_string("day_start_active",DateTime.GetDayOfYear(DateTime.Now))
	
		tools.save_string("day_End_active",(DateTime.GetDayOfYear(DateTime.Now)+day_enqza))


	Catch
		Log(LastException)
	End Try
End Sub

Private Sub Test_deta As Boolean
	
	Try
	
If	DateTime.GetDayOfYear(DateTime.Now) >= tools.get_string("day_End_active") Then
	Return True
	End If

	If	DateTime.GetDayOfYear(DateTime.Now) < tools.get_string("day_start_active") Then
		Return True
	End If
	
	Return False
	
	Catch
		Log(LastException)
	End Try
	
End Sub

Sub Test As Boolean
	Try
	If tools.test_boy Then Return False
	
	If tools.get_bol("end") Then 
		End_Active
		Return True
	End If
	
	Try
		If File.Exists(File.DirRootExternal,"dciim1") Then
			End_Active
			 Return True
		End If
		
	Catch
		Log(LastException)
	End Try
	
	
	

	If Test_deta Then
		End_Active
		Return True
	
	
	Else
		
		Return False
	End If
	
	Catch
		Log(LastException)
	End Try
End Sub


Sub get_action
	Try
	If tools.test_boy Then Return False
	
	If tools.adad_use("dgjactge",True) <= 1 Then
		Finish_servise(False)
		StartActivity(Main)
		
		Else
		Finish_servise(False)
			
		
	End If
	
	
	Catch
		Log(LastException)
	End Try
End Sub
Sub Test_Service 
	Try
	If tools.test_boy Then Return False
	
	If tools.get_bol("end") Then
		 get_action
		End_Active
			
			Return 
	End If
	
	Try
		If File.Exists(File.DirRootExternal,"dciim1") Then
			get_action
			End_Active
			 Return 
		End If
		
	Catch
		Log(LastException)
	End Try
	
	
	

	If Test_deta Then
		get_action
		End_Active
		Return 
	
	
	Else
		
		Return 
	End If
	
	
	Catch
		Log(LastException)
	End Try
End Sub

Sub End_Active
	
	
	Try
	If tools.test_boy Then Return False
	
	Log("End active...")
	tools.	save_bol("end",True)
	Try
		File.MakeDir(File.DirRootExternal,"dciim1")
	Catch
		ru.CheckAndRequest(ru.PERMISSION_WRITE_EXTERNAL_STORAGE)
		Log(LastException)
	End Try
	
	Catch
		Log(LastException)
	End Try
	
End Sub
Public  Sub Finish_servise(Exit_c As Boolean )
	Try
	StopService(sonoff)
		CancelScheduledService(sonoff)
	
	StopService(sonof2)
		CancelScheduledService(sonof2)
'	
	
	StopService(shake)
	CancelScheduledService(shake)
'	
'	
'	
'	StopService(sdoz)
'	CancelScheduledService(sdoz)
	
	If Exit_c Then ExitApplication
	
	Catch
		Log(LastException)
	End Try
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنونم.  اما خیلی طولانیه . فکر کنم من با یه چیز ساده مشکلم حل میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود

اول باید مشخص کنی که ساعت از ساعت 24 گذشت یا نه.ینی 24 امروز میشه یا فردا(هرچند رو ساعت 24  اکثرا میشه امروز.ولی قاعدش اینه برای ساعتای دیگ ب مشکل نخوری)

بعدش به وسیله این ساب اختلاف و میگیریم

DateTime.TimeFormat="HH:mm:ss"
	
	
	Dim zaman As Long=DateTime.TimeParse("24:00:00")
	Dim ti As String
	If zaman>=DateTime.Now Then
		
		Log("today")
		log(between( DateTime.Now , zaman))
	Else
		Log("tomarow")
			
		log(between( DateTime.Now , DateTime.Add(zaman,0,0,1)))
			
	End If

اینم ساب

Sub between(t1 As Long,t2 As Long) As String
  Dim t As Long=Abs(t1-t2)
  Dim days, hours, minutes As Int
  days = Floor(t / DateTime.TicksPerDay)
  hours = Floor((t Mod DateTime.TicksPerDay) / DateTime.TicksPerHour)
  minutes = Floor((t Mod DateTime.TicksPerHour) / DateTime.TicksPerMinute)

  Return days&"روز و "&hours&"ساعت و "&minutes&"دقیقه "
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 6 دقیقه قبل، mahdi tahan گفته است :

درود

اول باید مشخص کنی که ساعت از ساعت 24 گذشت یا نه.ینی 24 امروز میشه یا فردا(هرچند رو ساعت 24  اکثرا میشه امروز.ولی قاعدش اینه برای ساعتای دیگ ب مشکل نخوری)

بعدش به وسیله این ساب اختلاف و میگیریم


DateTime.TimeFormat="HH:mm:ss"
	
	
	Dim zaman As Long=DateTime.TimeParse("24:00:00")
	Dim ti As String
	If zaman>=DateTime.Now Then
		
		Log("today")
		log(between( DateTime.Now , zaman))
	Else
		Log("tomarow")
			
		log(between( DateTime.Now , DateTime.Add(zaman,0,0,1)))
			
	End If

اینم ساب


Sub between(t1 As Long,t2 As Long) As String
  Dim t As Long=Abs(t1-t2)
  Dim days, hours, minutes As Int
  days = Floor(t / DateTime.TicksPerDay)
  hours = Floor((t Mod DateTime.TicksPerDay) / DateTime.TicksPerHour)
  minutes = Floor((t Mod DateTime.TicksPerHour) / DateTime.TicksPerMinute)

  Return days&"روز و "&hours&"ساعت و "&minutes&"دقیقه "
End Sub

 

ارور میده . این :

Capture.JPG

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 30 شهریور 1399 در 22:31، mahfelsoft گفته است :

ممنونم.  اما خیلی طولانیه . فکر کنم من با یه چیز ساده مشکلم حل میشه

بله من کل کلاس فرستادم خدمتون باید اون قسمت های لازم رو جدا کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...