精华内容
下载资源
问答
  • 自定义fns

    2019-08-14 16:22:42
    自定义fns jsp页面需要引入自定义fns函数声明:<%@ taglib prefix=“fns” uri="/WEB-INF/tlds/fns.tld" %>,自定义的tld文件位于/WEB-INF/tlds/fns.tld 一般需要C标签配合使用,同时引入C标签声明:<%@ ...

    自定义fns

    jsp页面需要引入自定义fns函数声明:<%@ taglib prefix=“fns” uri="/WEB-INF/tlds/fns.tld" %>,自定义的tld文件位于/WEB-INF/tlds/fns.tld

    一般需要C标签配合使用,同时引入C标签声明:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    自定义需要写一个后缀为tld的xml配置文件
    例如
        <?xml version="1.0" encoding="UTF-8" ?>
        
        <!--引入schema约束规则-->
        <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
            version="2.0">
    
        <!--依赖JSTL 1.1 的标签库-->
        <description>JSTL 1.1 functions library</description>
        <display-name>JSTL functions sys</display-name>
        <tlib-version>1.1</tlib-version>
        <short-name>fns</short-name>
        <uri>http://java.sun.com/jsp/jstl/functionss</uri>
        
        <!--第一个自定义的方法-->
        <function>
            <!--description描述-->
            <description>获取配置</description>
            
            <!--方法名称-->
            <name>getConfig</name>
            
            <!--方法类全路径-->
            <function-class>com.aisino.aisinosite.common.config.Global</function-class>
            
            <!--方法的参数的顺序和类型-->
            <function-signature>java.lang.String getConfig(java.lang.String)</function-signature>
            
            <!--使用案列规则-->
            <example>${fns:getConfig(key)}</example>
        </function>
        
    
    java全路径下实现的方法代码
    public class Global {
        /**
    	 * 保存全局属性值
    	 */
    	private static Map<String, String> map = Maps.newHashMap();
    	
    	
    	/**
    	 * 属性文件加载对象
    	 */
    	private static PropertiesLoader loader = new PropertiesLoader("aisino*.properties");
    
    
        /**
    	 * 获取配置
    	 * @see ${fns:getConfig('adminPath')}
    	 */
    	public static String getConfig(String key) {
    		String value = map.get(key);
    		if (value == null){
    		    //获取配置文件中的value
    			value = loader.getProperty(key);
    			map.put(key, value != null ? value : StringUtils.EMPTY);
    		}
    		return value;
    	}
    	
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • FNS客户端-源码

    2021-02-18 05:28:40
    系统范围信息服务(SWIM)联邦NOTAM系统(FNS)Java消息服务(JMS)参考实现(FnsClient)提供了有关如何通过使用FNS Initial建立和维护FNS NOTAM数据库本地实例的示例实现加载(FIL)和SWIM FNS JMS服务。...
  • chartjs-适配器日期-fns 概述 该适配器允许在Chart.js中使用date-fns。 需要 2.8.0或更高版本以及 2.0.0或更高版本。 注意:一旦加载,此适配器将覆盖Chart.js中提供的默认日期适配器(有副作用)。 安装 npm npm...
  • date-fns API文档 使用JSDOC生成date-fns文档。
  • @ nuxtjs / date-fns 现代JavaScript日期实用程序库-Nuxt.js的date-fns 设置 将@nuxtjs/date-fns依赖项添加到您的项目中 yarn add --dev @nuxtjs/date-fns # or npm install --save-dev @nuxtjs/date-fns 添加@...
  • FNS4TAP v1.5 公共免费软件。 FNS4TAP 实现接受所有传入 TCP 连接的 TUN 虚拟网络接口... http://www.fornesia.com/Thread-Share-FNS4TAP
  • date-fns-源码

    2021-03-09 19:16:57
    @ dword-design / date-fns 安装 # NPM $ npm install @dword-design/date-fns # Yarn $ yarn add @dword-design/date-fns 执照 除非另有说明,否则所有作品均为: 版权所有:copyright:Sebastian Landwehr 并...
  • 灰烬日期-fns 借助为您的ember-cli应用程序提供了轻量级的日期助手。 如果您只需要格式化日期,Ember date-fns将为您提供帮助。 如果您正在寻找更多功能,请参阅 。 安装 在您的ember-cli项目中,运行 ember ...
  • date-fns provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.  Documentation | ‍ JavaScript Jobs It's like ...
  • 日期-fns-tz 使用 v2.0.0的时区支持。 通过使用浏览器API,无需将时区数据包含在代码束中。 现代浏览器均支持,对于那些不使用浏览器,则可以使用。 如果您不希望使用polyfill,则仍可以使用时区选项,但只能使用...
  • + = ngx-date-fns Angular 2.0及更高版本的管道。 安装 该库已经过 v2.0.1的测试。 npm install --save date-fns npm install --save ngx-date-fns 对于date-fns v1支持: npm install --save date-fns@1.29.0 ...
  • 自定义 jstl 标签 fns

    千次阅读 2019-05-27 15:48:32
    %@ taglib prefix=”fns” uri=”/WEB-INF/tlds/fns.tld” %>,自定义的tld文件位于/WEB-INF/tlds/fns.tld 一般需要C标签配合使用,同时引入C标签声明: <%@ taglib prefix=”c” uri=”http://java.s...

    1、jsp 头部页面引入函数

    jsp页面需要引入自定义fns函数声明: 
    <%@ taglib prefix=”fns” uri=”/WEB-INF/tlds/fns.tld” %>,自定义的tld文件位于/WEB-INF/tlds/fns.tld 
    一般需要C标签配合使用,同时引入C标签声明: 
    <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>

    2、fns.tld 代码,仿照jstl的fn函数fn.tld的书写格式:

    <?xml version="1.0" encoding="UTF-8" ?>

    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">

        <description>JSTL 1.1 functions library</description>
        <display-name>JSTL functions sys</display-name>
        <tlib-version>1.1</tlib-version>
        <short-name>fns</short-name>
        <uri>http://java.sun.com/jsp/jstl/functionss</uri>


        <function>
            <description>获取开发公司名称</description>
            <name>getCompanyName</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getCompanyName()</function-signature>
            <example>${fns:getCompanyName()}</example>
        </function>

        <function>
            <description>获取项目名称</description>
            <name>getProjectName</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getProjectName()</function-signature>
            <example>${fns:getProjectName()}</example>
        </function>

        <function>
            <description>获取基本设置信息</description>
            <name>getSysBase</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.SysBase getSysBase()</function-signature>
            <example>${fns:getSysBase()}</example>
        </function>


        <function>
            <description>获取管理路径</description>
            <name>getAdminPath</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getAdminPath()</function-signature>
            <example>${fns:getAdminPath()}</example>
        </function>
        <function>
            <description>获取网站路径</description>
            <name>getFrontPath</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getFrontPath()</function-signature>
            <example>${fns:getFrontPath()}</example>
        </function>
        <function>
            <description>获取网站URL后缀</description>
            <name>getUrlSuffix</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getUrlSuffix()</function-signature>
            <example>${fns:getUrlSuffix()}</example>
        </function>
        <function>
            <description>获取配置</description>
            <name>getConfig</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getConfig(java.lang.String)</function-signature>
            <example>${fns:getConfig(key)}</example>
        </function>
        <function>
            <description>获取常量</description>
            <name>getConst</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.Object getConst(java.lang.String)</function-signature>
            <example>${fns:getConst(key)}</example>
        </function>


        <!-- UserUtils -->
        <function>
            <description>数字转换为中文字符串</description>
            <name>convertToChart</name>
            <function-class>com.jeeplus.common.utils.StringUtils</function-class>
            <function-signature>java.lang.String convertToChart(int)</function-signature>
            <example>${fns:convertToChart(digit)}</example>
        </function>
        <function>
            <description>获取当前用户对象</description>
            <name>getUser</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.User getUser()</function-signature>
            <example>${fns:getUser()}</example>
        </function>

        <function>
            <description>根据编码获取用户对象</description>
            <name>getUserById</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.User get(java.lang.String)</function-signature>
            <example>${fns:getUserById(id)}</example>
        </function>

        <function>
            <description>获取授权用户信息</description>
            <name>getPrincipal</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.security.SystemAuthorizingRealm.Principal getPrincipal()</function-signature>
            <example>${fns:getPrincipal()}</example>
        </function>

        <function>
            <description>获取当前用户的菜单对象列表</description>
            <name>getMenuList</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>java.util.List getMenuList()</function-signature>
            <example>${fns:getMenuList()}</example>
        </function>

        <function>
            <description>获取当前用户的菜单对象列表</description>
            <name>getTopMenu</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.Menu getTopMenu()</function-signature>
            <example>${fns:getTopMenu()}</example>
        </function>
        <function>
            <description>获取当前时间与指定时间的差值</description>
            <name>getTime</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>java.util.Date getTime(java.lang.String)</function-signature>
            <example>${fns:getTime(java.lang.String)}</example>
        </function>
        <function>
            <description>获取当前用户的区域对象列表</description>
            <name>getAreaList</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>java.util.List getAreaList()</function-signature>
            <example>${fns:getAreaList()}</example>
        </function>

        <function>
            <description>获取当前用户的部门对象列表</description>
            <name>getOfficeList</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>java.util.List getOfficeList()</function-signature>
            <example>${fns:getOfficeList()}</example>
        </function>

        <function>
            <description>获取当前用户缓存</description>
            <name>getCache</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>java.lang.Object getCache(java.lang.String, java.lang.Object)</function-signature>
            <example>${fns:getCache(cacheName, defaultValue)}</example>
        </function>

        <!-- DictUtils -->
        <function>
            <description>获取字典标签</description>
            <name>getDictLabel</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getDictLabel(java.lang.String, java.lang.String, java.lang.String)</function-signature>
            <example>${fns:getDictLabel(value, type, defaultValue)}</example>
        </function>

        <function>
            <description>获取字典标签(多个)</description>
            <name>getDictLabels</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getDictLabels(java.lang.String, java.lang.String, java.lang.String)</function-signature>
            <example>${fns:getDictLabels(values, type, defaultValue)}</example>
        </function>

        <function>
            <description>获取字典值</description>
            <name>getDictValue</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getDictValue(java.lang.String, java.lang.String, java.lang.String)</function-signature>
            <example>${fns:getDictValue(label, type, defaultValue)}</example>
        </function>

        <!--获取字典对象列表 start-->
        <function>
            <description>获取字典对象列表</description>
            <!--EL页面调用名字-->
            <name>getDictList</name>
            <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
            <function-signature>java.util.List getDictList(java.lang.String)</function-signature>
            <!--举例说明-->
            <example>${fns:getDictList(type)}</example>
        </function>
        <!--获取字典对象列表 end-->

        <function>
            <description>获取字典对象列表</description>
            <!--EL页面调用名字-->
            <name>getDictListForQuestion</name>
            <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
            <function-signature>java.util.List getDictListForQuestion(java.lang.String)</function-signature>
            <!--举例说明-->
            <example>${fns:getDictListForQuestion(type)}</example>
        </function>

        <!--获取字典对象列表 start-->
        <function>
            <description>获取字典对象列表</description>
            <!--EL页面调用名字-->
            <name>getDictList2</name>
            <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
            <function-signature>java.util.List getDictList2(java.lang.String,java.lang.String)</function-signature>
            <!--举例说明-->
            <example>${fns:getDictList2(type,keyValue)}</example>
        </function>
        <!--获取字典对象列表 end-->

        <function>
            <description>获取系统常量对象列表</description>
            <!--EL页面调用名字-->
            <name>getConsList</name>
            <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
            <function-signature>java.util.List getConsList(java.lang.String)</function-signature>
            <!--举例说明-->
            <example>${fns:getConsList(type)}</example>
        </function>

        <function>
            <description>获取系统常量对象列表-增加所有**选项</description>
            <!--EL页面调用名字-->
            <name>getConsList2</name>
            <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
            <function-signature>java.util.List getConsList2(java.lang.String,java.lang.String)</function-signature>
            <!--举例说明-->
            <example>${fns:getConsList2(type,keyValue)}</example>
        </function>

        <function>
            <description>获取字典对象列表</description>
            <name>getDictListJson</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getDictListJson(java.lang.String)</function-signature>
            <example>${fns:getDictListJson(type)}</example>
        </function>

        <function>
            <description>获取对象的属性值</description>
            <name>getValue</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getValue(java.lang.Object, java.lang.String)</function-signature>
            <example>${fns:getValue(obj, name)}</example>
        </function>

        <function>
            <description>获取两级对象的属性值</description>
            <name>getObjectValue</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>java.lang.String getObjectValue(java.lang.Object, java.lang.String)</function-signature>
            <example>${fns:getObjectValue(obj, name)}</example>
        </function>

        <!-- Encodes -->
        <function>
            <description>URL编码</description>
            <name>urlEncode</name>
            <function-class>com.jeeplus.common.utils.Encodes</function-class>
            <function-signature>java.lang.String urlEncode(java.lang.String)</function-signature>
            <example>${fns:urlEncode(part)}</example>
        </function>
        <function>
            <description>URL解码</description>
            <name>urlDecode</name>
            <function-class>com.jeeplus.common.utils.Encodes</function-class>
            <function-signature>java.lang.String urlDecode(java.lang.String)</function-signature>
            <example>${fns:urlDecode(part)}</example>
        </function>
        <function>
            <description>HTML编码</description>
            <name>escapeHtml</name>
            <function-class>com.jeeplus.common.utils.Encodes</function-class>
            <function-signature>java.lang.String escapeHtml(java.lang.String)</function-signature>
            <example>${fns:escapeHtml(html)}</example>
        </function>
        <function>
            <description>HTML解码</description>
            <name>unescapeHtml</name>
            <function-class>com.jeeplus.common.utils.Encodes</function-class>
            <function-signature>java.lang.String unescapeHtml(java.lang.String)</function-signature>
            <example>${fns:unescapeHtml(html)}</example>
        </function>

        <!-- StringUtils -->
        <function>
            <description>从后边开始截取字符串</description>
            <name>substringAfterLast</name>
            <function-class>org.apache.commons.lang3.StringUtils</function-class>
            <function-signature>java.lang.String substringAfterLast(java.lang.String, java.lang.String)</function-signature>
            <example>${fns:substringAfterLast(str,separator)}</example>
        </function>
        <function>
            <description>判断字符串是否以某某开头</description>
            <name>startsWith</name>
            <function-class>org.apache.commons.lang3.StringUtils</function-class>
            <function-signature>boolean startsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>
            <example>${fns:startsWith(str,prefix)}</example>
        </function>
        <function>
            <description>判断字符串是否以某某结尾</description>
            <name>endsWith</name>
            <function-class>org.apache.commons.lang3.StringUtils</function-class>
            <function-signature>boolean endsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>
            <example>${fns:endsWith(str,suffix)}</example>
        </function>
        <function>
            <description>缩写字符串,超过最大宽度用“...”表示</description>
            <name>abbr</name>
            <function-class>com.jeeplus.common.utils.StringUtils</function-class>
            <function-signature>java.lang.String abbr(java.lang.String, int)</function-signature>
            <example>${fns:abbr(str,length)}</example>
        </function>
        <function>
            <description>替换掉HTML标签</description>
            <name>replaceHtml</name>
            <function-class>com.jeeplus.common.utils.StringUtils</function-class>
            <function-signature>java.lang.String replaceHtml(java.lang.String)</function-signature>
            <example>${fns:replaceHtml(html)}</example>
        </function>
        <function>
            <description>转换为JS获取对象值,生成三目运算返回结果。</description>
            <name>jsGetVal</name>
            <function-class>com.jeeplus.common.utils.StringUtils</function-class>
            <function-signature>java.lang.String jsGetVal(java.lang.String)</function-signature>
            <example>${fns:jsGetVal('row.user.id')}  返回:!row?'':!row.user?'':!row.user.id?'':row.user.id</example>
        </function>

        <!-- DateUtils -->
        <function>
            <description>获取当前日期</description>
            <name>getDate</name>
            <function-class>com.jeeplus.common.utils.DateUtils</function-class>
            <function-signature>java.lang.String getDate(java.lang.String)</function-signature>
            <example>${fns:getDate(pattern)}</example>
        </function>
        <function>
            <description>获取过去的天数</description>
            <name>pastDays</name>
            <function-class>com.jeeplus.common.utils.DateUtils</function-class>
            <function-signature>long pastDays(java.util.Date)</function-signature>
            <example>${fns:pastDays(date)}</example>
        </function>
        <function>
            <description>将日期对象Date转为标准格式字符串yyyy-mm-dd hh:mm:ss显示</description>
            <name>formatDateTime</name>
            <function-class>com.jeeplus.common.utils.DateUtils</function-class>
            <function-signature>java.lang.String formatDateTime(java.util.Date)</function-signature>
            <example>${fns:formatDateTime(date)}</example>
        </function>
        <function>
            <description>将日期对象Date转为几小时前,几天前显示</description>
            <name>formatDateDiff</name>
            <function-class>com.jeeplus.common.utils.DateUtils</function-class>
            <function-signature>java.lang.String formatDateDiff(java.util.Date)</function-signature>
            <example>${fns:formatDateDiff(date)}</example>
        </function>
        <!-- JsonMapper -->
        <function>
            <description>对象转换JSON字符串</description>
            <name>toJson</name>
            <function-class>com.jeeplus.common.mapper.JsonMapper</function-class>
            <function-signature>java.lang.String toJsonString(java.lang.Object)</function-signature>
            <example>${fns:toJson(object)}</example>
        </function>

        <function>
            <description>根据编码获取用户对象</description>
            <name>getByLoginName</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.User getByLoginName(java.lang.String)</function-signature>
            <example>${fns:getByLoginName(loginName)}</example>
        </function>

        <function>
            <description>根据当前用户id获取用户头像</description>
            <name>getUserPhoto</name>
            <function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.entity.User getUserPhoto(java.lang.String)</function-signature>
            <example>${fns:getUserPhoto(userId)}</example>
        </function>


        <!-- 绑定学年 -->
        <function>
            <description>绑定学年</description>
            <name>getSchoolYearList</name>
            <function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
            <function-signature>com.jeeplus.modules.sys.utils.DictUtils getSchoolYearList()</function-signature>
            <example>${fns:getSchoolYearList()}</example>  
        </function>

        <function>
            <description>获取项目盘符地址</description>
            <name>getPubEnclosureDirPath</name>
            <function-class>com.jeeplus.common.config.Global</function-class>
            <function-signature>java.lang.String getPubEnclosureDirPath()</function-signature>
            <example>${fns:getPubEnclosureDirPath()}</example>
        </function>

    </taglib>

    3、 为表达式函数(标签函数)提供后台服务类:common.config.Global

    /**
     * Copyright &copy; 2015-2020 <a href="http://www.runyu.com/">RunYu</a> All rights reserved.
     */
    package com.jeeplus.common.config;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.UnsupportedEncodingException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;

    import org.apache.ibatis.io.Resources;
    import org.springframework.core.io.DefaultResourceLoader;

    import com.ckfinder.connector.ServletContextFactory;
    import com.google.common.collect.Maps;
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    import com.jeeplus.common.utils.CacheUtils;
    import com.jeeplus.common.utils.PropertiesLoader;
    import com.jeeplus.common.utils.StringUtils;
    import com.jeeplus.modules.sys.entity.SysBase;

    /**
     * 全局配置类
     * 
     * @author runyu
     * @version 2014-06-25
     */
    public class Global {

        /**
         * 当前对象实例
         */
        private static Global global = new Global();

        /**
         * 保存全局属性值
         */
        private static Map<String, String> map = Maps.newHashMap();

        /**
         * 属性文件加载对象
         */
        private static PropertiesLoader loader = new PropertiesLoader("runyu.properties");

        /**
         * 显示/隐藏
         */
        public static final String SHOW = "1";
        public static final String HIDE = "0";

        /**
         * 是/否
         */
        public static final String YES = "1";
        public static final String NO = "0";

        /**
         * 对/错
         */
        public static final String TRUE = "true";
        public static final String FALSE = "false";

        /**
         * 上传文件基础虚拟路径
         */
        public static final String USERFILES_BASE_URL = "/userFiles/";

        /**
         * 上传文件基础虚拟路径
         */
        public static final String USERFILES_URL = "/admin/logo/";

        /**
         * 上传图片基础虚拟路径
         */
        public static final String IMAGE_BASE_URL = "/logo/";

        /**
         * 获取当前对象实例
         */
        public static Global getInstance() {
            return global;
        }

        public static boolean doAuthorization = false;
        public static final String AUTHORIZATIONCACHE = "AuthorizationCache";
        public static final String AUTHORIZATIONCACHEKEY = "Authorization";

        /**
         * 获取配置
         * 
         * @see ${fns:getConfig('adminPath')}
         */
        @SuppressWarnings("unchecked")
        public static String getConfig(String key) {
            // 验证拦截器是否已经被调用。如果没有被调用,抛出错误
    //      System.out.println("--------------------------------------------doAuthorization:" + doAuthorization
    //              + "--------------------------------------------");
    //      if (doAuthorization) {
    //          HashMap<String, Boolean> mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE,
    //                  AUTHORIZATIONCACHEKEY);
    //          String sdate = "";
    //          Date ddate = new Date();
    //          sdate = (new SimpleDateFormat("yyyyMMdd")).format(ddate);
    //          System.out.println("--------------------------------------------sdate:" + sdate
    //                  + "--------------------------------------------");
    //          if (mapAuthorization == null) {
    //              System.out.println("--------------------------------------------mapAuthorization == null:" + true
    //                      + "--------------------------------------------");
    //
    //          } else {
    //              System.out.println("--------------------------------------------mapAuthorization == null:" + false
    //                      + "--------------------------------------------");
    //
    //          }
    //          // mapAuthorization=null;
    //          if (mapAuthorization == null) {
    //
    //              // 缓存为空时,重新调用api接口重置缓存
    //              doAuthorization = false;
    //              HttpUtils.RemoteAuthorizationCheck();
    //              mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
    //              doAuthorization = true;
    //          }
    //          System.out.println("--------------------------------------------mapAuthorization:" + mapAuthorization
    //                  + "--------------------------------------------");
    //
    //          if (mapAuthorization.get(sdate) == null) {
    //              // 缓存为空时,重新调用api接口重置缓存
    //              doAuthorization = false;
    //              HttpUtils.RemoteAuthorizationCheck();
    //              mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
    //              doAuthorization = true;
    //              mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
    //              System.out.println("--------------------------------------------mapAuthorization22222:"
    //                      + mapAuthorization + "--------------------------------------------");
    //
    //              // 重置后如果仍为空,抛出错误
    //              if (mapAuthorization.get(sdate) == null) {
    //                  throw new NullPointerException();
    //              }
    //              System.out.println("--------------------------------------------result:" + mapAuthorization.get(sdate)
    //                      + "--------------------------------------------");
    //
    //          } else {
    //              System.out.println("--------------------------------------------result2:" + mapAuthorization.get(sdate)
    //                      + "--------------------------------------------");
    //
    //              if (mapAuthorization.get(sdate) == false) {
    //                  throw new NullPointerException();
    //              }
    //          }
    //      }

            String value = map.get(key);
            if (value == null) {
                value = loader.getProperty(key);
                map.put(key, value != null ? value : StringUtils.EMPTY);
            }
            return value;
        }

        /**
         * 获取管理端根路径
         */
        public static String getAdminPath() {
            return getConfig("adminPath");
        }

        /**
         * 获取前端根路径
         */
        public static String getFrontPath() {
            return getConfig("frontPath");
        }

        /**
         * 获取URL后缀
         */
        public static String getUrlSuffix() {
            return getConfig("urlSuffix");
        }

        /**
         * 是否是演示模式,演示模式下不能修改用户、角色、密码、菜单、授权
         */
        public static Boolean isDemoMode() {
            String dm = getConfig("demoMode");
            return "true".equals(dm) || "1".equals(dm);
        }

        /**
         * 上传服务器IP
         */
        public static String uploadUrl() {
            String uploadUrl = getConfig("UPLOADURL");
            return uploadUrl;
        }

        /**
         * 在修改系统用户和角色时是否同步到Activiti
         */
        public static Boolean isSynActivitiIndetity() {
            String dm = getConfig("activiti.isSynActivitiIndetity");
            return "true".equals(dm) || "1".equals(dm);
        }

        /**
         * 页面获取常量
         * 
         * @see ${fns:getConst('YES')}
         */
        public static Object getConst(String field) {
            try {
                return Global.class.getField(field).get(null);
            } catch (Exception e) {
                // 异常代表无配置,这里什么也不做
            }
            return null;
        }

        /**
         * 获取上传文件的根目录
         * 
         * @return
         */
        public static String getUserfilesBaseDir() {
            String dir = getConfig("userfiles.basedir");
            if (StringUtils.isBlank(dir)) {
                try {
                    dir = ServletContextFactory.getServletContext().getRealPath("/");
                } catch (Exception e) {
                    return "";
                }
            }
            if (!dir.endsWith("/")) {
                dir += "/";
            }
            // System.out.println("userfiles.basedir: " + dir);
            return dir;
        }

        /**
         * 获取工程路径
         * 
         * @return
         */
        public static String getProjectPath() {
            // 如果配置了工程路径,则直接返回,否则自动获取。
            String projectPath = Global.getConfig("projectPath");
            if (StringUtils.isNotBlank(projectPath)) {
                return projectPath;
            }
            try {
                File file = new DefaultResourceLoader().getResource("").getFile();
                if (file != null) {
                    while (true) {
                        File f = new File(file.getPath() + File.separator + "src" + File.separator + "main");
                        if (f == null || f.exists()) {
                            break;
                        }
                        if (file.getParentFile() != null) {
                            file = file.getParentFile();
                        } else {
                            break;
                        }
                    }
                    projectPath = file.toString();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return projectPath;
        }

        /**
         * 获取根目录路径
         * 
         * @return
         */
        public static String getDirPath() {
            String projectPath = getProjectPath();
            Properties prop = System.getProperties();
            String os = prop.getProperty("os.name");
            if (os.startsWith("win") || os.startsWith("Win"))
                projectPath = projectPath.split(":")[0].toString() + ":\\userFiles\\";
            else
                projectPath = "/home/userFiles/";
            return projectPath;
        }

        /**
         * 获取项目盘符地址
         * 
         * @return
         */
        public static String getPubEnclosureDirPath() {
            String projectPath = HttpUtils.getPubEnclosureDirPath();
            return projectPath;
        }

        /**
         * 获取项目名称
         * 
         * 
         */
        public static String getProjectName() {
            String ProjectName = "";
            Gson gson = new Gson();
            String param = "";
            String json = "";

            try {
                json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
            } catch (Exception e) {
                e.printStackTrace();
            }
            SysBase result = null;
            try {
                result = gson.fromJson(json, new TypeToken<SysBase>() {
                }.getType());

            } catch (Exception e) {
                // TODO: handle exception
            }
            ProjectName = result.getProjectname().trim();
            return ProjectName;
        }

        /**
         * 获取开发公司名称
         * 
         * 
         */
        public static String getCompanyName() {
            String CompanyName = "";
            Gson gson = new Gson();
            String param = "";
            String json = "";

            try {
                json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
            } catch (Exception e) {
                e.printStackTrace();
            }
            SysBase result = null;
            try {
                result = gson.fromJson(json, new TypeToken<SysBase>() {
                }.getType());

            } catch (Exception e) {
                // TODO: handle exception
            }
            CompanyName = result.getCompanyname().trim();
            return CompanyName;
        }

        /**
         * 获取是否可以从网盘选择文件
         * 
         * 
         */
        public static SysBase getSysBase() {

            Gson gson = new Gson();
            String param = "";
            String json = "";

            try {
                json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
            } catch (Exception e) {
                e.printStackTrace();
            }
            SysBase result = null;
            try {
                result = gson.fromJson(json, new TypeToken<SysBase>() {
                }.getType());

            } catch (Exception e) {
                // TODO: handle exception
            }

            return result;
        }

        /**
         * 写入properties信息
         *
         * @param key
         *            名称
         * @param value
         *            值
         */
        public static void modifyConfig(String key, String value) {
            try {
                // 从输入流中读取属性列表(键和元素对)
                Properties prop = getProperties();
                prop.setProperty(key, value);
                String path = Global.class.getResource("/runyu.properties").getPath();
                FileOutputStream outputFile = new FileOutputStream(path);
                prop.store(outputFile, "modify");
                outputFile.close();
                outputFile.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        /**
         * 返回 Properties
         * 
         * @param fileName
         *            文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上)
         * @param
         * @return
         */
        public static Properties getProperties() {
            Properties prop = new Properties();
            try {
                Reader reader = Resources.getResourceAsReader("/runyu.properties");
                prop.load(reader);
            } catch (Exception e) {
                return null;
            }
            return prop;
        }

    }

    4、在jsp页面或js中使用自定义的表达式函数fns: 

    --------------------- 
    作者:__心诺 
    来源:CSDN 
    原文:https://blog.csdn.net/moxiaoya1314/article/details/80483086 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • render-prop-fns-源码

    2021-05-13 23:16:00
    render-prop-fns 安装 npm install --save render-prop-fns 用法 import React from "react" ; import { Counter } from "render-prop-fns" ; const Example = ( ) => ( { ( { inc , value } ) => ( { value }...
  • babel-plugin-date-fns-源码

    2021-04-30 04:13:20
    babel-plugin-date-fns :warning: 当前版本(2.x)支持date-fns v2。 如果您使用的是v1,请使用 安装 $ npm i --save date-fns $ npm i --save-dev babel-plugin-date-fns 例子 变身 import { differenceInYears ,...
  • date-fns时间库由浅入深

    万次阅读 2020-05-19 15:36:07
    今天给大家带来一个新的时间格式化工具:date-fns date-fns 是一个现代的 JavaScript 日期工具类库,提供了最全面、最简单和一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期 安装 npm install date-fns...

    在这里插入图片描述

    前言

    在项目开发中经常遇到要格式化时间,使用moment格式化时间,发现使用moment太过笨重,占用过大空间,
    今天给大家带来一个新的时间格式化工具:date-fns
    date-fns 是一个现代的 JavaScript 日期工具类库,提供了最全面、最简单和一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期

    安装

    npm install date-fns --save
    # or with yarn
    yarn add date-fns
    

    项目中使用

    自定义过滤器filter.js文件
    
    import Vue from 'vue'
    import format from 'date-fns/format'
     
    //自定义过滤器
    Vue.filter('date-format',function(value,formatStr='YYYY-MM-DD HH:mm:ss'){
        return format(value,formatStr)
    })
    在入口文件中引入
    import './filter.js'//加载过滤器
    在项目文件中使用
    <div class="time">{{rating.rateTime | date-format}}</div>
    

    官方API

    isToday():判断所传入日期是否为今天
    isYesterday(): 判断是否为昨天
    isTomorrow()判断是否为明天. 用法与isToday(), isYesterday()用法相同
    format(): 格式化日期函数
    addDays():获得第n天之后的日期;
    addHours(): 获得当前小时之后的小时(比如现在5点, 得到七点的时间).
    addMinutes():获得当前分钟之后n分钟的时间
    addMonths(): 获得当前月之后n个月的月份
    subDays():获得当前日期之前n天的日期
    subHours(): 获得当前时间之前n小时的时间
    subMinutes(): 获得当前时间之前n分钟的时间
    subMonths():获得当前月份之前n个月的时间
    differenceInDays(): 获得两个时间相差几天,
    differenceInHours();获得两个时间相差的小时.
    differenceInMinutes(): 获得两个时间相差的分钟
    differenceInMonths():获得两个时间相差月份
    differenceInWeeks(): 获得两个时间相差的周数
    differenceInYears():获得两个时间相差的年数
    startOfDay():返回传入日期一天开始的Date对象(一天开始的时间)
    endOfDay(): 获得传入日期一天的结束时间(与startOfDay对应)
    startOfMonth():获取月份的第一天
    endOfMonth(): 获得月份的最后一天
    getDate(): 获取传入的日期是几号;
    getDay(): 获取传入的日期是星期几
    getMonth(): 返回传入时间的月份
    getMinutes(): 返回传入时间的分钟数
    getHours():返回传入时间的小时数
    getISOWeek(): 返回传入时间所在月份的第几周.
    isEqual(): 判断传入的时间是否相等
    max(): 取得时间数组中的最大值
    min(): 取得时间数组中的最小值
    

    谢谢大家!

    展开全文
  • date-fns是一个&amp;amp;quot;麻雀虽小却五脏俱全&amp;amp;quot;的日期工具库.如果不翻墙,是看不到官方文档的,国内文档又很少.以下总结内容为我在最近的一次开发项目中使用. 该使用方法是在angualr5.0环境中...


    ** date-fns是一个"麻雀虽小却五脏俱全"的日期工具库.如果不翻墙,是看不到官方文档的,国内文档又很少.以下总结内容为我在最近的一次开发项目中使用. 该使用方法是在angualr5.0环境中使用的. 使用typescript.
    **

    以下为函数简介, 用法请查看正文(有目录了就不画表格了,先留着吧)

    函数名 作用
    isToday() 判断传入日期是否为今天
    isYesterday() 判断传入日期是否为昨天
    isTomorrow() 判断传入日期是否为
    format() 日期格式化
    addDays() 获得当前日期之后的日期
    addHours() 获得当前时间n小时之后的时间点
    addMinutes() 获得当前时间n分钟之后的时间
    addMonths() 获得当前月之后n个月的月份
    subDays() 获得当前时间之前n天的时间
    subHours() 获得当前时间之前n小时的时间
    subMinutes() 获得当前时间之前n分钟的时间
    subMonths() 获得当前时间之前n个月的时间
    differenceInYears() 获得两个时间相差的年份
    differenceInWeeks() 获得两个时间相差的周数
    differenceInDays() 获得两个时间相差的天数
    differenceInHours() 获得两个时间相差的小时数
    differenceInMinutes() 获得两个时间相差的分钟数

    安装

    npm install --save date-fns
    

    在angualr5.0项目中只需在使用时引入就好了,不需要在module.ts文件中引入.需要什么函数,就引入什么函数.

    import { isToday, format } from 'date-fns';
    

    1. isToday():判断所传入日期是否为今天

    通过查看date-fns的ts文件:` function isToday (date: Date | string | number ): boolean  namespace isToday {}`
    

    我们可以知道该函数接收 date, string, number类型参数. 返回boolean类型.
    举个例子:

    const day = new Date();
    console.log(isToday(day)); // 结果为: true
    

    同时我们也验证下传入字符串是否可行

     console.log(isToday("2019-01-01T06:35:00.000Z")); //结果false
    

    那既然有判断今天的,是否有判断是否为昨天,明天的呢,答案是有的

    2.isYesterday(): 判断是否为昨天

    通过查看date-fns的ts文件:function isYesterday ( date: Date | string | number ): boolean namespace isYesterday {}
    依然是传入 date, string, number类型参数. 返回boolean类型.
    举个例子:

     	const date = new Date();
        console.log(isYesterday(date)); //结果false
        console.log(isYesterday("2019-01-02T06:35:00.000Z")); //结果为true
    

    3.isTomorrow()判断是否为明天. 用法与isToday(), isYesterday()用法相同,就不加以累述了.

    日期格式化一直是js比较麻烦的事情.在date-fns中,这件事就很简单了.不需要像在es5中那样需要在Date原型上进行修改之类的操作了

    4.format(): 格式化日期函数

     function format (
        date: Date | string | number,
        format?: string,
        options?: {
          locale?: Object
        }
      ): string
      namespace format {}
    

    该函数传入三个参数, 第一个参数为必传参数,可以为date, string, number, 第二个format为日期格式,为可选参数.第三个暂时没用到是可选参数

    	 const date = new Date();
         console.log(format(date, 'HH:mm')); // 17:05
         console.log(format(date, 'YYYY-MM-DD HH:mm:ss')); //2019-01-03 17:26:33
         console.log(format(date, 'YYYY-MM-DD')); //2019-01-03 
        	// 不传第二个参数的时候.
         console.log(format(date));//2019-01-03T17:27:27.102+08:00
    

    日期格式问题的解决,接下来是当我们想要得到几天之后的日期,或是前几天的日期,下一周等等的日期,date-fns依然提供了相应地 函数供我们使用

    5. addDays():获得第n天之后的日期;

     function addDays (
        date: Date | string | number,
        amount: number
      ): Date
    

    该函数需要传入两个参数,第一个为date对象, 第二个为一个number类型的数字.传入1返回明天的日期,2则是后天的日期,以此类推. 返回的是一个日期对象

    	 let date = new Date(); //2019-01-03
        console.log(format( addDays(date, 1), 'YYYY-MM-DD HH:mm:ss')); // 2019-01-04 17:46:30
        //在这里为了阅读方便,我在该函数外面套用了format.
         console.log(format( addDays(date, 2), 'YYYY-MM-DD')); //2019-01-05
    

    有求之后的日期,就有求之后小时,分钟的,就不在一一累述了.用法也是相同的.只在这里提供函数名

    6.addHours(): 获得当前小时之后的小时(比如现在5点, 得到七点的时间).

    7.addMinutes():获得当前分钟之后n分钟的时间

    8.addMonths(): 获得当前月之后n个月的月份

    9.subDays():获得当前日期之前n天的日期

     function subDays (
        date: Date | string | number,
        amount: number
      ): Date
    

    该函数传入两个参数,第一个参数date可以为Date, string,number, 第一个参数为number类型,例如(1,2). 返回一个Date对象

     	const date = new Date();
        console.log(format(date, 'YYYY-MM-DD HH:mm:ss'));//2019-01-04 11:03:33
        console.log(format( subDays(date, 2), 'YYYY-MM-DD HH:mm:ss')); //2019-01-02 11:03:33
    

    同样的和获得之后的时间一样, 也有获得之前n小时,n分钟的时间的方法.

    10: subHours(): 获得当前时间之前n小时的时间

    11:subMinutes(): 获得当前时间之前n分钟的时间

    12: subMonths():获得当前月份之前n个月的时间

    说完这部分,下面来说下求时间差的一些方法. 这个在项目中也是相当常见的.

    13: differenceInDays(): 获得两个时间相差几天,

    function differenceInDays (
        dateLeft: Date | string | number,
        dateRight: Date | string | number
      ): number
    

    传入两个参数, dateLeft为时间比较靠前的时间, dateRight 为时间比较靠后的时间. 返回一个number类型的数字

      const time = '2017-01-29 11:03:33';
        const date = new Date();
        console.log(format(date, 'YYYY-MM-DD HH:mm:ss'));
        console.log(differenceInCalendarDays(date, time));
        console.log(differenceInDays(date, time)); //705
    

    注:在这里,还有一个函数为differenceInCalendarDays(); 在.ts文件中并未看出两者的区别.从字面的意思也只是认为这是在日程表里的日期.至于还有没有其他的区别,等日后实际应用中在做探索. 另外,在differenceInDays()应用中会出现差是-0的情况.在js中打印console.log(-0 === 0); 返回是true.至于如何区分这两个数值的区别.百度下便可得知.js判断0与-0区别

    既然有求相差几天的函数,那么相差几小时,几分钟的方法也是有的. 用法也是一样的,不在举例子只展示方法

    14:differenceInHours();获得两个时间相差的小时.

    15: differenceInMinutes(): 获得两个时间相差的分钟

    16: differenceInMonths():获得两个时间相差月份

    17: differenceInWeeks(): 获得两个时间相差的周数

    18: differenceInYears():获得两个时间相差的年数

    19:startOfDay():返回传入日期一天开始的Date对象(一天开始的时间)

     function startOfDay (
        date: Date | string | number
      ): Date
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个Date对象.

    const today = new Date();
     const startDate = startOfDay(today); /Mon Jan 14 2019 00:00:00 GMT+0800 (中国标准时间)
    

    20: endOfDay(): 获得传入日期一天的结束时间(与startOfDay对应)

     function endOfDay (
        date: Date | string | number
      ): Date
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个Date对象.

    	const today = new Date();
    	const endDate = endOfDay(today);
        console.log('endDate', endDate);// Mon Jan 14 2019 23:59:59 GMT+0800 (中国标准时间)
    

    21: startOfMonth():获取月份的第一天

    function startOfMonth (
        date: Date | string | number
      ): Date
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个Date对象.

    	const today = new Date();
    	 const startMonth = startOfMonth(today); //Tue Jan 01 2019 00:00:00 GMT+0800 (中国标准时间)
        const aa = format(startMonth, 'YYYY-MM-DD HH:mm:ss'); // 2019-01-01 00:00:00
    

    22: endOfMonth(): 获得月份的最后一天

     function endOfMonth (
        date: Date | string | number
      ): Date
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个Date对象.

    	const today = new Date();
    	 const endMonth = endOfMonth(today); //Thu Jan 31 2019 23:59:59 GMT+0800 (中国标准时间)
        const aa = format(endMonth, 'YYYY-MM-DD HH:mm:ss'); // 2019-01-31 23:59:59
        console.log('endMonth', endMonth);
    

    其他的诸如startOfHour(),startOfMinute(),startOfToday()等等方法就不一一介绍了.用法都一样.
    写到这里发现竟然没有写getDay()这些方法. 先写这块把

    23: getDate(): 获取传入的日期是几号;

    function getDate (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

     console.log(getDate('2019-01-15 00:00:00')); // 15
    

    24: getDay(): 获取传入的日期是星期几

     function getDay (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

    console.log(getDay('2019-01-15 00:00:00')); // 2
    

    25: getMonth(): 返回传入时间的月份

      function getMonth (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

    	const day =new Date();
       console.log(getMonth(day)); // 0
    

    该函数返回的数字从0开始, 即0代表1月份. 这个和原生js Date对象的getMonth()是一样的.

    26: getMinutes(): 返回传入时间的分钟数

     function getMinutes (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

    	const day =new Date(); //15:09
       console.log(getMinutes(day)); // 9
    

    27:getHours():返回传入时间的小时数

     function getHours (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

    const day = new Date();//15:22
    console.log(getHours(day)); // 15
    

    28: getISOWeek(): 返回传入时间所在月份的第几周.

     function getISOWeek (
        date: Date | string | number
      ): number
    

    传入一个参数,可以是Date类型,string, number类型. 返回一个number类型的数据

        console.log(getISOWeek('2019-01-10 00:00:00')); //2
    

    29: isEqual(): 判断传入的时间是否相等

     function isEqual (
        dateLeft: Date | string | number,
        dateRight: Date | string | number
      ): boolean
    

    传入两个参数,可以是Date类型,string, number类型.返回一个Boolean类型.

       console.log('eee', isEqual('2019年1月2日', this.day)); //false
       
    

    这个函数的比对有些过分了, 传入两个参数必须是相同格式的, 比如"YYYY-MM-DD", 两个参数就必须都是这个格式, 如果不是则会返回false. 这个函数也可以理解为,在相同时间格式下,比两个时间是否相等.

    30:max: 取得时间数组中的最大值

    这个最大最小是指时间靠后为大. 反之为小

     function max (
        ...dates: (Date | string | number)[]
      ): Date
    

    该函数传入一个参数, …dates: (Date | string | number)[]这种叫做spread扩展运算符, 他还有个反对者是rest参数. 这个运算符的好处就是只要是Date | string | number这三种类型的参数, 传几个, 你随意
    为了方便举例子, 再次借用subDays(),这些来做

    const day = new Date();
      console.log(max(subDays(day, 1), day, subDays(day, 2))); 
      //Mon Jan 28 2019 15:23:52 GMT+0800 (中国标准时间)
      
    

    31: min(): 取得时间数组中的最小值

     function min (
        ...dates: (Date | string | number)[]
      ): Date
    

    与max函数相同

    const day = new Date();
     console.log(min(subDays(day, 1), day, subDays(day, 2)));
     //Sat Jan 26 2019 15:26:49 GMT+0800 (中国标准时间)
    

    32:目前版本不在支持string类型的问题

    之前在说format时,可以传入string,最近在使用的时候,发现不可以。但是有时候后台会给我们传回“2020-07-29T16:00:00.000+0000”这种格式的数据。那我们应该怎么处理呢。
    官方也给了解决方案。
    那就是

    
    import {format} from 'date-fns'
    import { parseISO } from "date-fns/fp";
    let date = '2020-07-29T16:00:00.000+0000';
    format(parseISO(date), "yyyy-MM-dd HH:mm:ss"); //使用parseISO就可以解决了
    

    未完待续…

    展开全文
  • fns-and-scope-源码

    2021-05-17 23:03:32
    分叉此仓库,克隆叉子,然后打开fns-scopes.js并完成所有活动,然后打开closures.js并完成所有这些活动。 经常提交并使用您的密码! 学习目标 了解网络的运作方式 前端与后端 Web应用程序格局 了解JavaScript与...
  • 前端项目-date-fns.zip

    2019-09-03 10:26:22
    前端项目-date-fns,Modern JavaScript date utility library
  • Angular-ngx-date-fns.zip

    2019-09-18 11:30:43
    Angular-ngx-date-fns.zip,角度大于等于2.0的日期fns管道 =ngx日期fns,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web...
  • 电话Fns 一个小型的,功能齐全的现代电话号码库,它从有趣的库中灵感 如何 npm i phone-fns 标准模块系统 import phoneFns from 'phone-fns' 普通JS const phoneFns = require ( 'phone-fns' ) 通过浏览器 < ...
  • 使用date-fns和JavaScript的日历生成器功能 截屏视频在这里: :
  • date-fns日期格式化 总览 (Overview) Ever written a method to get the time of day in GMT? or have wondered if I need to convert the time to UTC? Most applications have some common date-time ...
  • npm install duration-fns 概述 import * as duration from 'duration-fns' // Parsing / stringifying // --------------------------------------------- duration . parse ( 'PT1M30S' ) // { minutes: 1, ...
  • date-fns是一个现代JavaScript日期实用程序库,它提供了用于在浏览器和Node.js中操纵JavaScript日期的最全面的工具集。 它是完整而又简单的,因为API明确,只有一种解决问题的方法。 它高度可靠且一致,始终遵守时区...
  • Fundamental of Network Security FNS pages:120 英语
  • npm install date-fns 使用date_fns时的错误信息 Module ''date-fns/format'' has no exported member 'format'. 解决: 改成 直接导入根目录就好了
  • tengen:ClojureScript的基于let的简单基于试剂的组件fns

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,776
精华内容 2,710
关键字:

fns