寫本帖子的目前,是把日期字段的計(jì)算,
只要能看到本帖子,日期相關(guān)的計(jì)算就可以一網(wǎng)打盡。
1、日期的計(jì)算 如結(jié)束日期為開(kāi)始日期+1天
結(jié)束日期=開(kāi)始日期.AddDays(1)
詳細(xì)的可參看下面帖子
分享:實(shí)體服務(wù)規(guī)則實(shí)現(xiàn)日期計(jì)算功能
https://vip.kingdee.com/article/1016
2、時(shí)間間隔 如2個(gè)日期的時(shí)間間隔獲取間隔小時(shí)數(shù)
方式1:(結(jié)束日期-開(kāi)始日期).TotalHours
方式2:(結(jié)束日期-開(kāi)始日期).Days * 24 + (結(jié)束日期-開(kāi)始日期).Hours
方式1比方式2更精確。
下面帖子9樓回復(fù):
根據(jù)日期計(jì)算天數(shù)的公式怎么寫?
方式1:(結(jié)束日期-開(kāi)始日期).TotalHours
方式2:(結(jié)束日期-開(kāi)始日期).Days * 24 + (結(jié)束日期-開(kāi)始日期).Hours
方式1比方式2更精確。
為什么會(huì)精確,說(shuō)明如下
(結(jié)束日期-開(kāi)始日期)計(jì)算出的是一個(gè)時(shí)間間隔。最大的單位是天,類似x 天 x 小時(shí) x 分 x 秒。
如獲取天數(shù)是 (結(jié)束日期-開(kāi)始日期).Days 這個(gè)是只獲取其中的天數(shù)部分,只會(huì)是一個(gè)整數(shù)天。
如果想獲取更精確的天數(shù)間隔,該是(結(jié)束日期-開(kāi)始日期).TotalDays 這種就會(huì)根據(jù)后面的小時(shí)分鐘及秒數(shù)計(jì)算出小數(shù)天。
3、獲取日期的 月份,天
日期類型字段.Date.Month
可參看帖子
是否有日期函數(shù)可以取出日期字段的月份
取值:日期類型字段元素.Date.Month
示例:
BOS IDE 字段值更新配置:
運(yùn)行時(shí)效果:
相關(guān)的:
日期類型字段元素.Date.Year(獲取年)
日期類型字段元素.Date.Day(獲取天)
4、獲取日期是對(duì)應(yīng)的星期幾
已解決:可通過(guò)選擇日期自動(dòng)計(jì)算出對(duì)應(yīng)的星期幾嗎?
環(huán)境:K3 Cloud 5.0
問(wèn)題描述:可以通過(guò)選擇日期自動(dòng)計(jì)算出對(duì)應(yīng)的星期幾嗎?這個(gè)功能可通過(guò)配置實(shí)現(xiàn)么?
深圳-王林 提供解決辦法:
星期字段為下拉列表,關(guān)聯(lián)【周次星期】
配置實(shí)體服務(wù)規(guī)則:計(jì)算定義公式的值并填寫到指定列
條件:日期 <>''
計(jì)算公式:星期=str(int(日期.DayOfWeek))
星期字段為下拉列表,關(guān)聯(lián)【周次星期】
配置實(shí)體服務(wù)規(guī)則:計(jì)算定義公式的值并填寫到指定列
條件:日期 <>''
計(jì)算公式:星期=str(int(日期.DayOfWeek))
終極補(bǔ)充說(shuō)明,先把日期屬性設(shè)成上圖這樣,然后再按照上面那個(gè)計(jì)算式做就可以了。
5、一個(gè)巧妙的案例 獲取當(dāng)月的最后1天
月份最后一天日期 = 日期字段.AddDays(1-float((日期字段.ToString("dd"))));
月份最后一天日期 = 月份最后一天日期.AddMonths(+1);
最終的 月份最后一天日期 = 月份最后一天日期.AddDays(-1);
參看帖子22樓
分享:實(shí)體服務(wù)規(guī)則實(shí)現(xiàn)日期計(jì)算功能
需求反饋,希望通過(guò)實(shí)體服務(wù)規(guī)則配置實(shí)現(xiàn)日期計(jì)算
今天研究了下【計(jì)算定義公式的值并填寫到指定列】,可以實(shí)現(xiàn)此需求,與大家分享下
如:?jiǎn)螕?jù)上三個(gè)日期字段
FSDate:開(kāi)始日期,默認(rèn)當(dāng)前日期,如2013.11.21
FMDate:中間日期,默認(rèn)固定日期,如2013.11.27
FEDate:結(jié)束日期,待更新字段
實(shí)體服務(wù)規(guī)則選中【計(jì)算定義公式的值并填寫到指定列】
如稍復(fù)雜點(diǎn)的場(chǎng)景,腳本如下:
FEDate = FSDate.AddDays((FMDate - FSDate).Days + 10)
說(shuō)明:
結(jié)束日期 = 開(kāi)始日期+差量天數(shù)
差量天數(shù) = 中間日期與開(kāi)始日期的差量天數(shù) + 10天
日期間的差量計(jì)算使用 “減法” 運(yùn)算符,得到運(yùn)算后日期使用Days屬性,即得到兩段日期的差量天數(shù)
在某一日期基礎(chǔ)上,增加天數(shù),使用AddDays方法
同理,年、月、日、時(shí)、分、秒應(yīng)該都可以,使用不同方法與屬性罷了,除“AddDays”其他還未驗(yàn)證,需要的同學(xué)可驗(yàn)證下
年:AddYears Years
月:AddMonths Months
日:AddDays Days
時(shí):AddHours Hours
分:AddMinutes Minutes
秒:AddSeconds Seconds
可能存在的陷阱:如
FEDate = FSDate + 1
希望開(kāi)始日期加一天,得到結(jié)束日期
這種寫法存在問(wèn)題,日期與整數(shù)做加法,找不到合適的重載運(yùn)算符“+”,通過(guò)AddDays(整數(shù))實(shí)現(xiàn)
當(dāng)然,要完整實(shí)現(xiàn)這個(gè)規(guī)則,還要記得勾選字段的【即時(shí)觸發(fā)更新事件】屬性:)
FENDDate = FSTARDate.AddDays(1-float((FSTARDate.ToString("dd")))) ;
FENDDate = FENDDate.AddMonths(+1);
FENDDate = FENDDate.AddDays(-1);
這樣可以算出每個(gè)月最后一天
計(jì)算月份差:
F_JD_Integer = (F_JD_Date.Year - FCreateDate.Year) * 12 + (F_JD_Date.Month - FCreateDate.Month)
FSDate:開(kāi)始日期,默認(rèn)當(dāng)前日期,如2013.11.21
FMDate:中間日期,默認(rèn)固定日期,如2013.11.27
FEDate:結(jié)束日期,待更新字段
實(shí)體服務(wù)規(guī)則選中【計(jì)算定義公式的值并填寫到指定列】
如稍復(fù)雜點(diǎn)的場(chǎng)景,腳本如下:
FEDate = FSDate.AddDays((FMDate - FSDate).Days + 10)
說(shuō)明:
結(jié)束日期 = 開(kāi)始日期+差量天數(shù)
差量天數(shù) = 中間日期與開(kāi)始日期的差量天數(shù) + 10天