电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.表达式函数.日期部分函数

来源:金蝶云社区作者:金蝶2024-09-236

二开案例.表达式函数.日期部分函数

【应用场景】表达式中如果获取日期的某个部分,比如年、月、日,周?

【演示案例】给采购订单添加保存校验器,当采购订单上的采购日期和核算日期不在同一周时,禁止保存单据。

【实现步骤】

<1>编写函数,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;

using System;

using System.Globalization;


namespace Jac.XkDemo.BOS.Core.Functions

{

    /// <summary>

    /// 【函数】日期部分函数

    /// 用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

    /// </summary>

    [Serializable]

    public class DatePartFuncDefine : AbstractFuncDefine

    {

        public DatePartFuncDefine()

        {

        }


        public DatePartFuncDefine(Context ctx, dynamic obj)

        {

            m_ctx = ctx;

            m_obj = obj;

        }


        public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)

        {

            return new DatePartFuncDefine(ctx, obj);

        }


        public override object GetFuncDefine()

        {

            return new Func<string, object, int>(GetDatePart);

        }


        /// <summary>

        /// 日期部分函数,用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

        /// </summary>

        /// <param name="format">格式</param>

        /// <param name="dtObj">日期</param>

        /// <returns></returns>

        int GetDatePart(string format, object dtObj)

        {

            #region 传入参数校验


            DateTime dt;

            if (dtObj is DateTime)

            {

                dt = (DateTime)dtObj;

            }

            else if (dtObj is string)

            {

                dt = Convert.ToDateTime(dtObj);

            }

            else

            {

                return -1;

            }


            if (string.IsNullOrWhiteSpace(format))

            {

                return -1;

            }


            #endregion


            #region 计算日期部分


            switch (format)

            {

                case "year":

                case "yyyy":

                case "yy": // 年

                    return dt.Year;

                case "qq":

                case "q": // 季度

                    return (dt.Month - 1) / 3 + 1;

                case "month":

                case "mm":

                case "m": // 月

                    return dt.Month;

                case "day":

                case "dd":

                case "d": // 日

                    return dt.Day;

                case "hour":

                case "hh":

                case "h": // 时

                    return dt.Hour;

                case "minute":

                case "mi":

                case "n": // 分

                    return dt.Minute;

                case "second":

                case "ss":

                case "s": // 秒

                    return dt.Second;

                case "millisecond": // 毫秒

                case "ms": // 毫秒

                    return dt.Millisecond;

                case "week":

                case "dw":

                case "w": // 星期

                    return (int)dt.DayOfWeek; // 0周日1周一6周六

                case "dy":

                case "y": // 年中的日

                    return dt.DayOf

二开案例.表达式函数.日期部分函数

【应用场景】表达式中如果获取日期的某个部分,比如年、月、日,周?【演示案例】给采购订单添加保存校验器,当采购订单上的采购日期和核算...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信