【第22期】观点:IT 行业加班,到底有没有价值?

UDF:日期加减

原创 2017年01月03日 15:50:52

@param : date = “20161221” add = “-1”
@return : 20161220” */

package com.chen.udf;

import java.util.Calendar;
import java.util.GregorianCalendar;
/**
 *@param :  date = "20161221" 
 *          add = "-1"
 *@return : "20161220"
 */
public class UdfAddDays {

    public String evaluate(String date,String add){
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(4,6));
        int day = Integer.parseInt(date.substring(6,8));
        //判断如果传入的日期的月份大于12或者小于1,则返回空
        if(month > 12 || month < 1){
            return "";
        }
        int addDate = Integer.parseInt(add);
        Calendar c = new GregorianCalendar();
        //此处0表示的是一月,故月份减一;
        c.set(year, month-1, day);
        //调用后 day字段的值减去调用前day字段的值等于 addDate;
        c.add(Calendar.DAY_OF_MONTH, addDate);

        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH) + 1;
        day = c.get(Calendar.DAY_OF_MONTH);
        return year + "" + (month < 10 ? "0" + month : month) + "" + (day < 10 ? "0" + day : day);
    }

    public String evaluate(String date,int add){
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(4,6));
        int day = Integer.parseInt(date.substring(6,8));
        if(month > 12 || month < 1){
            return "";
        }
        Calendar c = new GregorianCalendar();
        c.set(year, month-1, day);
        c.add(Calendar.DAY_OF_MONTH, add);
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH) + 1;
        day = c.get(Calendar.DAY_OF_MONTH);
        return year + "" + (month < 10 ? "0" + month : month) + "" + (day < 10 ? "0" + day : day);
    }

    public static void main(String[] args) {
        UdfAddDays ad = new UdfAddDays();
        System.out.println(ad.evaluate("20161221", "-1")); //20161220
        System.out.println(ad.evaluate("20161221", "15")); //20170105
        System.out.println(ad.evaluate("20161221", 10)); //20161231
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

[linux]:shell编程之如何进行日期时分秒的加减?

有一个非常简单的办法能够解决这个问题,那就是通过时间序列的办法。要知道所有时间都能够化成秒,所以我们的原理就是 (时间化成秒)—-》(加减秒)—-》(加减完的秒时间然后再化成格式化的时间)具体代码如...

Java对时间日期的加减

  最近在开发中遇到时间日期上面的一些处理,查询了一些资料,下面列出两种最常用的处理方式 Java提供了3个日期类,Date,Calendar,DateFormat,Date对象主要用于创建日期,获取日期,Calendar可用于获取和设置日期,DataFormat主要用于对日期进行格式...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

hive编写按月份加减日期的UDF来根据月份时间段查询表数据

hive编写按月份加减日期的UDF来根据月份时间段查询表数据

JAVA 日期加减

[code="java"] /** * 计算前一天 、后一天 * * @param date 当前输入的日期 格式为 2010-01-21 * @param amount * @return */ public static Str...

Python日期的加减等操作

Python日期的加减等操作 1. 日期输出格式化所有日期、时间的api都在datetime模块内。 datetime => string now = datetime.datetime.now()...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)