• <menu id="w2i4a"></menu>
  • logo VARCHART XGantt 2019教程

    文檔首頁>>VARCHART XGantt 2019教程>>VARCHART XGantt用戶手冊(ActiveX版):如何使用日歷(下)

    VARCHART XGantt用戶手冊(ActiveX版):如何使用日歷(下)


    VARCHART XGantt是一個交互式的甘特圖控件,其模塊化的設(shè)計讓您可以創(chuàng)建滿足您和您的客戶所需求的應(yīng)用程序。相較于其他甘特圖控件,VARCHART XGantt穩(wěn)定性高,開發(fā)時間長,各大行業(yè)的知名公司都在使用它。本文主要描述了如何使用日歷教程中的最后一部分內(nèi)容——如何使用日歷進(jìn)行計算~

    點(diǎn)擊下載VARCHART XGantt免費(fèi)版

    如何使用日歷進(jìn)行計算

    日歷中的計算不一定在時間范圍內(nèi)可見。對象日歷AddDuration方法從開始日期和指定的工作時間單位數(shù)計算最終日期,同時考慮到非工作時間。傳遞負(fù)號的時間單位將導(dǎo)致從給定的結(jié)束日期開始計算開始日期。 CalcDuration方法是AddDuration方法的補(bǔ)充,它從給定的開始日期和結(jié)束日期計算工作時間單位(持續(xù)時間)數(shù)。

    VARCHART XGantt用戶手冊(ActiveX版):如何使用日歷(下)

    計算方法是如何工作的

    請注意:指定為天、小時、分鐘或秒的工作時間單位必須與VcGantt對象的屬性TimeUnit定義的時間單位相對應(yīng)。

    AddDuration方法可確保所計算的日期始終位于工作時間間隔內(nèi)。同時,如果源值位于非工作時間內(nèi),則后向計算不一定提供與前向計算的源值相等的結(jié)果。

    計算的有限可逆性

    以交互方式創(chuàng)建或修改活動時,VARCHART XGantt會自動注意活動無法在非工作時間內(nèi)開始或結(jié)束。如果希望通過API創(chuàng)建或修改節(jié)點(diǎn)時行為保持一致,則需要通過手動更正開始日期或結(jié)束日期來確保這一點(diǎn)。為此,位于非工作時間中的開始日期需要移動到下一個工作時間間隔的開始,并且結(jié)束日期對應(yīng)于上一個工作時間間隔的結(jié)束。有一些方法可以確定間隔的極限。

    示例代碼

    If calendar.IsWorktime(StartDate) = False Then
     StartDate = calendar.GetNextIntervalBorder(StartDate)
    End If
    If calendar.IsWorktime(EndDate) = False Then
     EndDate = calendar.GetNextIntervalBorder(EndDate)
    End If

    夏令時

    VARCHART XGantt自動支持夏令時。在中歐,DST從3月的最后一個星期日開始,到10月的最后一個星期日結(jié)束。在夏令時開始時,時鐘從2:00 h延遲到3:00 h,在時鐘結(jié)束時從3:00 h延遲到2:00 h。

    夏令時開始:

    VARCHART XGantt用戶手冊(ActiveX版):如何使用日歷(下)

    夏令時結(jié)束:

    VARCHART XGantt用戶手冊(ActiveX版):如何使用日歷(下)

    如果將TimeUnit設(shè)置為小時,則在夏時制的開始日期,方法calcDuration檢索23小時的時間跨度,而在最后一天,則返回25小時。如果設(shè)置為天,則兩種情況下的時間跨度均為1天。

    檢索時間間隔的限制

    Calendar對象用于檢索時間間隔GetStartOfInterval、GetNextIntervalBorderGetPreviousIntervalBorder的限制的方法,允許迭代工作時間間隔和非工作時間間隔。返回的結(jié)果是相對的,并以方法作為參數(shù)傳遞的參考日期為參考。

    可以通過Calendar對象的IsWorkTime方法檢查日期是否在工作時間或非工作時間。盡管新間隔的開始日期等于上一個間隔的結(jié)束日期,但是開始日期始終屬于新間隔(向右打開)。

    方法GetEndOfPreviousWorkTimeGetStartOfNextWorkTime不提供新的選項,而只是簡化了工作時間間隔的處理。

    在下面的編程示例中,將檢索日歷的時間間隔并將其寫入文件。此外,計算給定期間內(nèi)可用的工作時間:

    示例代碼

    Private Sub writeCalendarIntervalsToFile(ByVal filename As String, ByVal
    calendar As VcCalendar, ByVal startDate As Date, ByVal endDate As Date,
    ByVal listWorkIntervals As Boolean, ByVal listNonWorkIntervals As
    Boolean)
    Dim tmpStartDate As Date
    Dim nextStartDate As Date
    Dim totalWorkTime As Integer
    Open filename For Output As #1
    Print #1, "Time Intervals of " & calendar.Name & "between " & startDate
    & " - " & endDate 
     tmpStartDate = startDate
     Do While tmpStartDate < endDate
    
     nextStartDate = calendar.GetNextIntervalBorder(tmpStartDate)
    
     If tmpStartDate = nextStartDate Then
     nextStartDate = endDate
     End If
    
     If nextStartDate > endDate Then
     nextStartDate = endDate
     End If
    
     If calendar.IsWorktime(tmpStartDate) Then
     If listWorkIntervals Then
     Print #1, "WorkInterval" & " " & tmpStartDate & " " &
    nextStartDate
     End If
     Else
     If listNonWorkIntervals Then
     Print #1, "NonWorkInterval" & " " & tmpStartDate & " " &
    nextStartDate
     End If
     End If
    
     tmpStartDate = nextStartDate
    Loop
    
     totalWorkTime = calendar.CalcDuration(startDate, endDate)
     Print #1, "Total work time: " & totalWorkTime & " Units"
     Close #1
    End Sub

    請注意:日歷中的時間間隔可以精確地指定為秒,并且最多可以包含137年(以秒為單位)的間隔。

    將時間間隔寫入文件的代碼

    示例代碼

    Call writeCalendarIntervalsToFile("C:\text.txt", calendar,
    VcGantt1.TimeScaleStart, VcGantt1.TimeScaleEnd, True, True)
    Time Intervals of CompanyCalendar_1 between
    01.01.2011 00:00:00 - 01.01.2012 00:00:00
    01.01.2011 00:00:00 - 02.01.2011 00:00:00 non-work time
    02.01.2011 00:00:00 - 03.01.2011 00:00:00 non-work time
    03.01.2011 00:00:00 - 03.01.2011 08:00:00 non-work time
    03.01.2011 08:00:00 - 03.01.2011 12:00:00 work time
    03.01.2011 12:00:00 - 03.01.2011 13:00:00 non-work time
    03.01.2011 13:00:00 - 03.01.2011 17:00:00 work time
    03.01.2011 17:00:00 - 04.01.2011 00:00:00 non-work time
    04.01.2011 00:00:00 - 04.01.2011 08:00:00 non-work time
    04.01.2011 08:00:00 - 04.01.2011 12:00:00 work time
    04.01.2011 12:00:00 - 04.01.2011 13:00:00 non-work time 
    04.01.2011 13:00:00 - 04.01.2011 17:00:00 work time
    04.01.2011 17:00:00 - 05.01.2011 00:00:00 non-work time
    ...
    30.12.2011 00:00:00 - 30.12.2011 08:00:00 non-work time
    30.12.2011 08:00:00 - 30.12.2011 12:00:00 work time
    30.12.2011 12:00:00 - 30.12.2011 13:00:00 non-work time
    30.12.2011 13:00:00 - 30.12.2011 17:00:00 work time
    30.12.2011 17:00:00 - 31.12.2011 00:00:00 non-work time
    31.12.2011 00:00:00 - 01.01.2012 00:00:00 non-work time
    Total work time: 2064 Units

    本教程內(nèi)容到這里就完結(jié)了,感興趣的朋友可以繼續(xù)關(guān)注我們哦~您可以下載VARCHART XGantt試用版進(jìn)行體驗~

    相關(guān)內(nèi)容推薦:

    VARCHART XGantt用戶手冊>>>


    想要購買VARCHART XGantt正版授權(quán),或了解更多產(chǎn)品信息請點(diǎn)擊“咨詢在線客服”

    1024,慧都致敬程序員們,zend現(xiàn)金優(yōu)惠券限時放送,了解詳情請點(diǎn)擊下方圖片

    735×380-2.png


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();