Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > function php หรือ javascript date คำนวณวันเวลาทำงานลบวันหยุดค่ะ



 

function php หรือ javascript date คำนวณวันเวลาทำงานลบวันหยุดค่ะ

 



Topic : 023187

Guest




ใครเขียนได้บ้างค่ะ คือฉันมีตัวอย่างเป็น function vbscript ค่ะแต่อยากให้ช่วยเปลี่ยนเป็น PHP หรือ java อ่ะค่ะ ขอบคุณมาก ๆค่ะ
--------------------------------------------------------------------------------------------------------------------
Option Explicit
Public Const MyDB = "C:\db.mdb"

Public Const workingHours As Integer = 8

Dim wTemp As Variant
Dim strTime As String
Dim ttlTime As Date

Dim startDate, stopDate As String
Dim startTime, stopTime As Date
Dim startMT, stopMT, startAT, stopAT As Date
Dim numTaDay, numTaMrn, numTaAft As Date
--------------------------------------------------------------------------------------------------------------------
Function isHoliday(sDate) As Boolean
Dim nw As Workspace
Dim db As Database
Dim rs As Recordset
Dim sql As String

On Error GoTo SA_Errors

Set nw = DBEngine.Workspaces(0)
Set db = nw.OpenDatabase(MyDB, False, False)

sql = "SELECT holiday_date as hd FROM holiday WHERE holiday_date = CDate('" & sDate & "')"
Set rs = db.OpenRecordset(sql, dbOpenSnapshot, dbReadOnly)
If rs.EOF Then
isHoliday = False
Else
isHoliday = True
End If
Exit Function

SA_Errors:
isHoliday = False
Exit Function
End Function
--------------------------------------------------------------------------------------------------------------------
Function NetDay(FromDate As Date, ToDate As Date) As Integer
Dim years, months, days, m, c As Integer
Dim myDate
Dim myWeekday As Integer
Dim numWeekday, numHoliday As Integer
Dim i As Date, j As Integer, k As Integer

If ToDate < FromDate Then
NetDay = 0
Exit Function
End If
days = Day(ToDate) - Day(FromDate)
months = Month(ToDate) - Month(FromDate)
years = Year(ToDate) - Year(FromDate)
If years > 1 Or months > 12 Then
NetDay = "#Error"
Exit Function
End If

If days < 0 Or months > 0 Then
m = CInt(Month(ToDate)) - 1
If m = 0 Then m = 12
For c = m To Month(FromDate) Step -1
Select Case c
Case 1, 3, 5, 7, 8, 10, 12
days = 31 + days
Case 4, 6, 9, 11
days = 30 + days
Case 2
If (Year(ToDate) Mod 4 = 0 And Year(ToDate) _
Mod 100 <> 0) Or Year(ToDate) Mod 400 = 0 Then
days = 29 + days
Else
days = 28 + days
End If
End Select
Next c
End If

If Not (days > 1) Then
NetDay = CStr(days)
Exit Function
End If
numWeekday = 0: numHoliday = 0
For i = FromDate To ToDate
myWeekday = Weekday(i)
myDate = CStr(Format(i, "dd/mm/yyyy"))
If myWeekday = vbSunday Or myWeekday = vbSaturday Then
numWeekday = numWeekday + 1
End If
If isHoliday(myDate) Then
numHoliday = numHoliday + 1
End If
Next i
NetDay = days - numWeekday - numHoliday
End Function
--------------------------------------------------------------------------------------------------------------------
Function difWorkTimes(startDT, stopDT As Date, diffDay As Integer) As Variant

startMT = #8:30:00 AM#
stopMT = #12:00:00 PM#
startAT = #1:00:00 PM#
stopAT = #5:30:00 PM#
numTaDay = #8:00:00 AM#
numTaMrn = #3:30:00 AM#
numTaAft = #4:30:00 AM#

startDate = Format(startDT, "yyyymmdd")
stopDate = Format(stopDT, "yyyymmdd")
startTime = CDate(Format(startDT, "h:m:s"))
stopTime = CDate(Format(stopDT, "h:m:s"))

If Not IsNumeric(diffDay) Or Not IsDate(startDT) Or Not IsDate(stopDT) Then
difWorkTimes = "#Error"
Exit Function
End If

If diffDay < 0 Or stopTime = #12:00:00 AM# Then
'ttlTime = #12:00:00 AM#
'diffWorkTime = CStr(Format(ttlTime, "hh:mm")) & " hrs"
difWorkTimes = "#Error"
Exit Function
End If
If startDate = stopDate Then 'in a day
If startTime < stopMT Then
If stopTime < startAT Then 'start / stop in a morning
ttlTime = stopTime - startTime
Else 'start morning / stop afternoon
ttlTime = (stopTime - startAT) + (stopMT - startTime)
End If
Else 'start / stop in a afternon
ttlTime = stopTime - startTime
End If
End If

If startDate < stopDate Then 'stop at another day
If startTime < stopMT Then 'start in a morning
If stopTime < stopMT Then 'start in a morning / stop at noon
ttlTime = (stopTime - startMT) + numTaAft + (stopMT - startTime)
Else 'start morning / stop afternoon
ttlTime = (stopTime - startAT) + numTaAft + numTaMrn + (stopMT - startTime)
End If
Else 'start afternoon
If stopTime < startAT Then 'start afternoon/ stop morning
ttlTime = (stopTime - startMT) + (stopAT - startTime)
Else 'start afternoon / stop afternoon
ttlTime = (stopTime - startAT) + numTaMrn + (stopAT - startTime)
End If
End If
End If
difWorkTimes = ttlTime
End Function
--------------------------------------------------------------------------------------------------------------------
Function diffWorkTime(startDT, stopDT As Date, diffDay As Integer) As String
Dim wDiffDay, wDiffTime As String
Dim wReturn As Variant

If difWorkTimes(startDT, stopDT, diffDay) = "#Error" Then
diffWorkTime = "#Error"
Exit Function
End If
If diffDay > 0 Then
' If Hour(ttlTime) > workingHours Then
' diffDay = diffDay + 1
' ttlTime = ttlTime - numTaDay
' End If
wDiffDay = CStr(Format((diffDay), "###")) & " days "
wDiffTime = CStr(Format(ttlTime, "hh:mm")) & " hrs"
diffWorkTime = wDiffDay & wDiffTime
Else
diffWorkTime = "0 days " & CStr(Format(ttlTime, "hh:mm")) & " hrs"
End If
End Function
--------------------------------------------------------------------------------------------------------------------
Function netWorkHrs(startDT, stopDT As Date, diffDay As Integer) As Variant

wTemp = difWorkTimes(startDT, stopDT, diffDay)

If wTemp = "#Error" Then
netWorkHrs = "#Error"
Else
netWorkHrs = (Hour(wTemp) + (diffDay * 8)) + (Minute(wTemp) * 0.01)
End If
End Function
--------------------------------------------------------------------------------------------------------------------
Function netWorkMin(startDT, stopDT As Date, diffDay As Integer) As Integer

wTemp = difWorkTimes(startDT, stopDT, diffDay)
If wTemp = "#Error" Then
netWorkMin = 0
Else
netWorkMin = ((Hour(wTemp) + (diffDay * 8)) * 60) + Minute(wTemp)
End If
End Function
--------------------------------------------------------------------------------------------------------------------
Function intvlTime(startDT, stopDT As Date, diffDay As Integer) As Variant

ttlTime = difWorkTimes(startDT, stopDT, diffDay)
intvlTime = Hour(ttlTime) + (Minute(ttlTime) * 0.01)
End Function
--------------------------------------------------------------------------------------------------------------------
Function NetDay1(FromDate As Date, ToDate As Date) As Integer
Dim years, months, days, m, c As Integer
Dim myDate
Dim myWeekday As Integer
Dim numWeekday, numHoliday As Integer
Dim i As Date, j As Integer, k As Integer
If FromDate = Null Then
FromDate = 0
End If
If ToDate < FromDate Then
NetDay1 = 0
Exit Function
End If
days = Day(ToDate) - Day(FromDate)
months = Month(ToDate) - Month(FromDate)
years = Year(ToDate) - Year(FromDate)
If years > 1 Or months > 12 Then
NetDay1 = 0
Exit Function
End If

If days < 0 Or months > 0 Then
m = CInt(Month(ToDate)) - 1
If m = 0 Then m = 12
For c = m To Month(FromDate) Step -1
Select Case c
Case 1, 3, 5, 7, 8, 10, 12
days = 31 + days
Case 4, 6, 9, 11
days = 30 + days
Case 2
If (Year(ToDate) Mod 4 = 0 And Year(ToDate) _
Mod 100 <> 0) Or Year(ToDate) Mod 400 = 0 Then
days = 29 + days
Else
days = 28 + days
End If
End Select
Next c
End If

If Not (days > 1) Then
NetDay1 = CStr(days)
Exit Function
End If
numWeekday = 0: numHoliday = 0
For i = FromDate To ToDate
myWeekday = Weekday(i)
myDate = CStr(Format(i, "dd/mm/yyyy"))
If myWeekday = vbSunday Or myWeekday = vbSaturday Then
numWeekday = numWeekday + 1
End If
If isHoliday(myDate) Then
numHoliday = numHoliday + 1
End If
Next i
NetDay1 = days
End Function
--------------------------------------------------------------------------------------------------------------------


Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 26 พ.ย. 2551 21:51:12 By : แนน View : 3935 Reply : 1
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Go to : JavaScript DateAdd() จะเขียนเพิ่นวันแบบอัตโนมัติน่ะครับ โดยบวกเพิ่มไปอีก 1 ปี Javascript
Go to : JavaScript DateAdd() AddDay , AddMonth , AddYear
Go to : JavaScript DateDiff() Calculating the difference date time
Go to : เราจะลบวันที่แล้วให้แสดงจำนวนวัน ด้วย Javascript อย่างไร...JavaScript DateDiff , JavaScript TimeDiff






Date : 2011-06-08 22:11:27 By : webmaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : function php หรือ javascript date คำนวณวันเวลาทำงานลบวันหยุดค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่