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,027

HOME > .NET Framework > Forum > ต้องการบวกเวลาข้ามวันโดยมีข้อแม้ 8.00 - 17:00 ให้ตัดไปวันใหม่ (ขออนุญาตตั้งกระทู้ใหม่ครับ)



 

ต้องการบวกเวลาข้ามวันโดยมีข้อแม้ 8.00 - 17:00 ให้ตัดไปวันใหม่ (ขออนุญาตตั้งกระทู้ใหม่ครับ)

 



Topic : 109430



โพสกระทู้ ( 42 )
บทความ ( 0 )



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



ต้องการกรอก นาที ลงไปแล้วให้คำนวนว่า ถึงวันไหน โดยมีข้อแม้ว่า
1 วันมีเวลา 8:00 - 12:00 , 13:00 - 17:00 (480 นาที) หากเกินนี้ให้ขึ้นวันใหม่ เช่น

Code (VB.NET)
D1 As Date = CDate("#1/6/2557 08:00#")
strMin = 2400

xx = cStr(DateAdd(DateInterval.Minute, strMin, D1)))

ผลลัพธ์ d1 = 5/6/2557 17:00


ไม่รู้จะ if จะอะไรยังไงเหมือนกันคับครับ งงๆ อยู่

ลองๆ หาดูในนี้แล้ว มีแต่แบบ บวกลบ ธรรมดาหนะครับ ตอนนี้ ความรู้เหมือนเพิ่งเรียนใหม่เลยครับ
รบกวนขอ code ตัวอย่างหน่อยนะครับ ไม่เคยใช้ function เกี่ยกับ date อะไรนี่เลย เพิ่งเริ่มทำดูเมื่อวานนี้ครับ

ยังไงรบกวนหน่อยนะครับ ขอบคุณครับ



Tag : .NET, Ms SQL Server 2008, VS 2010 (.NET 4.x)









ประวัติการแก้ไข
2014-06-24 09:52:42
2014-06-24 09:53:17
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-24 09:51:14 By : anbiun View : 3230 Reply : 14
 

 

No. 1



โพสกระทู้ ( 213 )
บทความ ( 0 )

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

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


code ตัวอย่าง ผมว่าหายากนะ ถ้ามันเป็นโจทย์เฉพาะ

08:00 - 12:00 = 240 นาที
13:00 - 17:00 = 240 นาที

ถ้า user ป้อน 239 ก็เอาไปคำนวณเวลาของรอบแรก
ถ้า user ป้อน 250 ก็ลบด้วย 240 ออก แล้วไปคำนวณเวลาของรอบหลัง

แต่ก็จะมีเงื่อนไขอื่นๆ ให้คิดต่ออีก เช่น

ถ้า user ป้อน 500 จะเอาไปคำนวณยังไง ถึงได้ เวลาของวันถัดไป


แล้วสมมติว่า คำนวณได้เป็น 2014-06-25 08:20:00

หากได้โจทย์ใหม่ว่า ให้คำนวณหาเวลา จากที่คำนวณไว้ครั้งสุดท้าย เพิ่มมาอีก จะทำยังไง


ลองคิดดูครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-24 13:07:21 By : Aod47
 


 

No. 2



โพสกระทู้ ( 281 )
บทความ ( 0 )



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


อยากรู้เหมือนกัน รอดูคนมาตอบครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-24 17:37:07 By : deksoke
 

 

No. 3



โพสกระทู้ ( 42 )
บทความ ( 0 )



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

ตอบความคิดเห็นที่ : 1 เขียนโดย : Aod47 เมื่อวันที่ 2014-06-24 13:07:21
รายละเอียดของการตอบ ::
Code (VB.NET)
Dim D1 As Date = CDate("#1/6/2557 08:00#")
        tmpInput = 1440

        If tmpInput > 480 Then
            MsgBox(CStr(DateAdd(DateInterval.Minute, tmpInput + 960, D1)))
        ElseIf tmpInput <= 240 Then
            MsgBox(CStr(DateAdd(DateInterval.Minute, tmpInput, D1)))
        ElseIf tmpInput > 240 Or tmpInput <= 480 Then
            MsgBox(CStr(DateAdd(DateInterval.Minute, tmpInput + 60, D1)))
        End If

คือมันต้อง If ไปเรื่อยๆ อะครับ ถ้าสามสิบวัน ก็ต้อง if แล้ว + เวลาเพิ่มไปอีกสามสิบครั้ง
ถ้าเดือนถัดไป 31 วันก็ต้อง if เข้าไปอีก

คิดไม่ออกครับว่าจะทำยังไงดี

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 08:23:03 By : anbiun
 


 

No. 4



โพสกระทู้ ( 213 )
บทความ ( 0 )

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

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


ลองเปลี่ยนมาใช้ Select Case ท่าจะดีกว่า If else นะครับ

Code (VB.NET)
Select [ Case ] testexpression
    [ Case expressionlist
        [ statements ] ]
    [ Case Else
        [ elsestatements ] ]
End Select

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 08:46:55 By : Aod47
 


 

No. 5



โพสกระทู้ ( 213 )
บทความ ( 0 )

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

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


วิธีหนึ่งที่ผมมักใช้เวลาคิดไม่ออก คือ เขียนสิ่งที่คิดลงไปในกระดาษ ครับ

พอเห็นภาพรวมแล้ว ค่อยตัด หรือ เติม สิ่งที่ขาดไปครับ

ถ้า hard code ไปเลย มันมักจะไม่ได้อย่างที่ต้องการครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 08:57:52 By : Aod47
 


 

No. 6



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : Aod47 เมื่อวันที่ 2014-06-25 08:57:52
รายละเอียดของการตอบ ::
เห็นดัวยครับ


จขกท. ควรเขียน ตัวอย่างการทำงานให้เห็นภาพของงานก่อนครับ
สิ่งที่มีคืออะไร แล้วสิ่งที่ต้องการ เป็นอย่างไร

กำหนด input output ให้เห็นเป็นรุปธรรม นะครับ

และค่อยกำหนดวิธีการทำงาน เป็นข้นเป็นตอน แล้วค่อยเอา code ใส่เข้าไปแทนที่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 09:04:58 By : Chaidhanan
 


 

No. 7



โพสกระทู้ ( 213 )
บทความ ( 0 )

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

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


ผมลองทำให้ดู เผื่อคุณเอาไปต่อยอดได้

mc
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 09:17:34 By : Aod47
 


 

No. 8



โพสกระทู้ ( 42 )
บทความ ( 0 )



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

ตอบความคิดเห็นที่ : 4 เขียนโดย : Aod47 เมื่อวันที่ 2014-06-25 08:46:55
รายละเอียดของการตอบ ::
ตรงนี้ได้แล้วครับ ตามที่แนะนำมา ^^ ขอบคุณมากๆครับ
Code (VB.NET)
line1:
        Select Case tmpInput
            Case 1 To 240
                MsgBox(CStr(DateAdd(DateInterval.Minute, tmpInput, D1)))
            Case 241 To 480
                MsgBox(CStr(DateAdd(DateInterval.Minute, tmpInput + 60, D1)))
            Case Is > 480
                D1 = (CDate(DateAdd(DateInterval.Day, +1, D1)))
                tmpInput = tmpInput - 480
                GoTo line1
            Case 0
                MsgBox("end")
        End Select


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 09:58:34 By : anbiun
 


 

No. 9



โพสกระทู้ ( 42 )
บทความ ( 0 )



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

ตอบความคิดเห็นที่ : 7 เขียนโดย : Aod47 เมื่อวันที่ 2014-06-25 09:17:34
รายละเอียดของการตอบ ::
ผมก็กำลัง งมๆ ทำตามนี้ละครับ ตอนนี้ติดตรงเวลา แต่เคลียร์ได้แล้วครับ ตามที่แนะนำมา

คราวนี้ก็เหลือเอาเวลา ไป select ในวันที่นั้นๆ ว่ามีเวลานี้อยู่จริงหรือไม่ ถ้าไม่มีก็ insert ได้
ตามที่คุณ Chaidhanan แนะนำมา

ขอบคุณอีกครั้งนะครับ



ประวัติการแก้ไข
2014-06-25 10:04:29
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 10:00:26 By : anbiun
 


 

No. 10



โพสกระทู้ ( 611 )
บทความ ( 0 )



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


ตอบความคิดเห็นที่ : 8 เขียนโดย : anbiun เมื่อวันที่ 2014-06-25 09:58:34
รายละเอียดของการตอบ ::
ความรู้ในช่วงอนุบาล
ถ้าผมจำไม่ผิดในหนึ่งสัปดาห์มีกี่วันและมีวันอะไรบ้าง?
ความรู้ในช่วงประถมวัยไม่น่าจะเกิน ป.3
เริ่มเรียนรู้การเทียบบัญญัติไตรยางค์


480 นาทีเท่ากับ 1 วันทำงานของคุณ
2,400 นาทีเท่ากับ (2,400 x 1)/480 === 5 วัน

x1 เศษของนาทีให้ปัดขึ้นเป็น 1 วัน

คุณก็จะได้จำนวนวันโดยประมาณการครับ โดยที่ยังไม่มีวันเริ่มต้น/เวลาเริ่มต้น เข้ามาเกี่ยวข้องแม้แต่นิดเดียวครับ

...
...
...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 15:38:18 By : หน้าฮี
 


 

No. 11



โพสกระทู้ ( 611 )
บทความ ( 0 )



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


มันก็อีหรอบเดียวกันครับ เขียน หอหีบฮอนกฮูกได้สวยงามแต่เราลืมไปแล้วว่า กอไก่ขอไข่เขียนอย่างไร ถ้ายังไม่เข้าใจอีก
ก็ท่องฮอนกฮูกย้อนกลับไปหากอไก่ ผมท่องผิดท่องถูกอายหลานเหมือนกันครับ

ความคิดเห็นของผมมันอยู่บนพื้นฐานครับแต่ก็ไม่ได้ถูกต้องไปเสียทั้งหมด ดังเหตุผลที่ผมได้กล่าวมาข้างต้นนั่นแล

ผมไกด์ให้คุณอีกนิดหนึ่ง หลักการนับ(ไม่เว้นแม้แต่ทางบัญชี ซึ่งยุกยิกกว่าเรามาก) ให้เลือกเอาสักอย่างหนึ่งว่า
จะนับต้นหรือนับปลาย อทิเช่น 1 ถึง 3 มันเท่ากับ 3 ไม่ใช่ แต่ 3-1 มันเท่ากับ 2 เป็นต้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 15:47:44 By : หน้าฮี
 


 

No. 12



โพสกระทู้ ( 611 )
บทความ ( 0 )



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


เวลาผ่านไปไวเหมือนโกหก พรึบพับพรึบพรับ ล้มแผละล้มแผละ เปล่าครับไม่มีอะไร นกพิราบมันบินมาเกาะหน้าต่าง
เพื่อนของผมชื่อ หมื่นเลยวัย ได้รับข้อมุลมาจากท่านขุนพิพากษา และส่งต่อกันมาเป็นทอดกล้วย ต้นตอข่าวมาจากคุณพระช่วย
พอผมอ่านเข้าใจแล้วก็หยิบดินสอพองผสมน้ำลายป้ายลงไปบนกระดาษเพื่อตอนกลับ
แต่ผมก็ไม่ลืมหยิบข้าวสารเสกให้นกมันนิดหน่อยแล้วปล่อยมันไป คล้ายฯดูหนังจีนสมัยสามก๊ก "สงครามยุคข่าวสาร"

Code (VB.NET)
        Dim dStart As DateTime = DateTime.Parse("0001-01-01 08:00:00 AM")
        Dim dEnd As DateTime = DateTime.Parse("0001-01-04 17:00:00 PM")
        Dim Period1 As Integer = 0 'Minutes
        Dim Period2 As Integer = 0 'Minutes
        While dStart < dEnd
            'If dStart.DayOfWeek <> DayOfWeek.Saturday AndAlso dStart.DayOfWeek <> DayOfWeek.Sunday Then
            If dStart.TimeOfDay.Hours >= 8 AndAlso dStart.TimeOfDay.Hours <= 12 Then
                Period1 += 1
            Else
                If dStart.TimeOfDay.Hours >= 13 AndAlso dStart.TimeOfDay.Hours <= 17 Then
                    Period2 += 1
                End If
            End If
            'End If
            dStart = dStart.AddMinutes(1)
        End While




ปล. ผมฝันไปหรือผมกลายเป็นคนบ้าไปแล้วว่ะเนี่ย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 16:07:46 By : หน้าฮี
 


 

No. 13



โพสกระทู้ ( 611 )
บทความ ( 0 )



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


เด็กยุคใหม่ (หุ่นยนต์)
ถ้าเป็นผู้ชาย ดูดนมเมียทุกวันทุกวันทุกวัน และหลงลืมไปว่าเคยดูดนมแม่
ุ้ถ้าเป็นผู้หญิง ผมนึกไม่ออกครับว่าจะเปรียบเทียบกับอะไร/อย่างไร?



















พอดีผมเหลือบไปเห็นขวดเบียร์วางอยู่บนพื้นขวดหนึ่ง นึกออกเลยครับว่าดูดอะไร "ก้นขวดเบียร์"
...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 17:14:02 By : หน้าฮี
 


 

No. 14



โพสกระทู้ ( 611 )
บทความ ( 0 )



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


คุณสังเกตุดู #NO12 ผมComment เอาไว้ Sunday, Saturday หมายความว่าถ้าในเงื่อนไขของคุณมีวันหยุดเข้ามาเกี่ยวข้อง อาจจะเป็นวันไหนก็ได้

พึงระวังนิดหนึ่งครับว่า คอมพิวเตอร์คำนวณกับสิ่งที่เราคิดบางครั้งก็ไม่เหมือนกัน เช่น

Input จำนวนนาทีเพื่อ หาจำนวนวัน สูตร = (x * 1.0)/480 '***** x * 1 --> poin to integer, x * 1.0 --> point to double

ลองทดสอบกับ SQL ค่ายไหนก็ได้ครับ Select 1/2 ผลลัพท์ที่ได้คือ 0 มันตรงข้ามกับที่เราคิดคือ 0.5

ที่เหลือก็ตรวจทานเอาครับ เพราะผมไม่ได้ทดสอบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-25 19:33:56 By : หน้าฮี
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการบวกเวลาข้ามวันโดยมีข้อแม้ 8.00 - 17:00 ให้ตัดไปวันใหม่ (ขออนุญาตตั้งกระทู้ใหม่ครับ)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่