首页 > 其他分享 >数值与时间转换

数值与时间转换

时间:2023-12-03 21:00:56浏览次数:29  
标签:转换 String startSign sdf 数值 add 时间 param Calendar

  • 根据开始时间、预测时长(即几个月),给 String 数组的时间 predictTime 赋值,并返回 double 数组的时间 tt

    /**
     * 获取预测时间段,封装进double类型数组,格式:202006
     * @param predictionStart 开始预测时间 ‘2023-01’
     * @param predictionPoint 预测时长
     * @param predictTime 预测时间数组
     * @return
     */
    private double[] getPredictionTimes(String predictionStart, int predictionPoint, String[] predictTime) {
        Calendar cal = Calendar.getInstance();
        int timeLength = predictionPoint;
        double[] tt = new double[timeLength];
        try {
            cal.setTime(SDF.parse(predictionStart));
            for (int i = 0; i < timeLength; i++) {
                String t = SDF.format(cal.getTime());
                predictTime[i] = t;
                t = t.split("-")[0] + t.split("-")[1];
                tt[i] = Double.valueOf(t);
                cal.add(Calendar.MONTH, 1);
            }
    
        } catch (Exception e) {
            tt = new double[timeLength];
        }
        return tt;
    }
    
  • 根据开始时间、预测数,来获取预测时间的列表

    /**
     * 获取开始年月后多少个月的年份列表
     *
     * @param startTime 开始年份
     * @param size 数量
     * @return:list
     */
    public static List<String> getMonthStartDateList(String startTime, int size) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        // 声明保存日期集合
        List<String> list = new ArrayList<>();
        try {
            // 转化成日期类型
            Date startDate = sdf.parse(startTime);
    
            //用Calendar 进行日期比较判断
            Calendar calendar = Calendar.getInstance();
            for (int i = 0; i < size; i++) {
                // 把日期添加到集合
                list.add(sdf.format(startDate));
    
                // 设置日期
                calendar.setTime(startDate);
    
                //把月数增加 1
                calendar.add(Calendar.MONTH, 1);
    
                // 获取增加后的日期
                startDate = calendar.getTime();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
    
    • 与第一个的 predictTime 获取值类似,不过一个是数组,一个是集合
  • 根据开始和结束时间,获取此期间内的年份列表,并转换成 “ yyyy-MM ” 的形式

    /**
     * 获取开始年月结束年份直接的年份列表
     * @param startTime 开始年份
     * @param endTime 结束年份
     * @return:list
     */
    public List<String> getBetweenMonths(String startTime, String endTime) {
        List<String> months = new ArrayList<String>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
    
        try {
            Date start = sdf.parse(startTime);
            Date end = sdf.parse(endTime);
            Calendar startSign = Calendar.getInstance();
            startSign.setTime(start);
            months.add(sdf.format(startSign.getTime()));
            startSign.add(Calendar.MONTH, 1);
            Calendar endSign = Calendar.getInstance();
            endSign.setTime(end);
            while (startSign.before(endSign)) {
                months.add(sdf.format(startSign.getTime()));
                startSign.add(Calendar.MONTH, 1);
            }
            months.add(sdf.format(startSign.getTime()));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return months;
    }
    

标签:转换,String,startSign,sdf,数值,add,时间,param,Calendar
From: https://www.cnblogs.com/zhu-ya-zhu/p/17873758.html

相关文章

  • 百分号、像素与数值的转换与像素区别
    vue百分值与数值之间转换方法一:lettopValue=Number(this.optionModel.grid[i].top);是尝试把整个字符串转换为数字,包括百分号。如果字符串不能被解析为有效的数字,那么结果将是NaN,在这种情况下,你可能需要添加错误处理代码来处理这种情况如果是40%值的话可以转成0.4......
  • 使用PyUIC将.ui文件转换为.py文件时出现 <?xml version="1.0" encoding="UTF-8"?>
    弄好相应第三方库在Pycharm中的配置后,完成窗口界面后生成.ui文件使用PyUIC将.ui文件转换为.py文件时出现<?xmlversion="1.0"encoding="UTF-8"?>   ^SyntaxError:invalidsyntax查了网上方法没解决,最后将PyUIC配置的Program路径从python.exe改为pyuic5.exe,问题解决......
  • 深入了解汉字转拼音转换工具:原理与应用
    一、引言汉字作为世界上最古老、最具象形意的文字之一,承载了数千年的历史文明。然而,在现代信息技术环境下,汉字的输入、输出和检索等方面存在一定的局限性。拼音作为汉字的一种音标表达方式,能够有效地解决这些问题。本文将为您介绍一款汉字转拼音转换工具,帮助您更好地理解和应用......
  • Linux和Windows时间不一致问题
    问题描述装过双系统或者虚拟机装Linux的人都知道,Linux的时间和Windows往往是不同步的,在编写跨平台程序的时候特别是对时间敏感的代码就带来很大的困扰解决办法这个问题可以在Linux下解决先用命令查看时区timedatectl如果系统刚刚装好,没有设置好时区,有可能默认的是America/L......
  • 类型转换
    由于Java是强类型语言,所以要进行有些运算的时候时,需要用到类型转换。运算中,不同类型的数据先转换为同一类型,然后进行运算。强制类型转换   (类型)变量名高--低自动类型转换  低--高规则:[低]byte,short,char<int< long<float<double[高]注意点:1.......
  • O(1) 时间插入、删除和获取随机元素
    O(1)时间插入、删除和获取随机元素难度:简单|中等√|困难-------------------用时:18分钟(第一次)-------------------作题日期:2023-12-03ps:本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!题目描述题目描述实现RandomizedSet类:Randomi......
  • 3-5 极语言文档类、地址类、日期类、时间类——成员表
    中文名字英文名称长度作用解释文档类DOCINFO20用来显示打印对话框或打印设置对话框。函数:PrintDlg(lppd)文档类——成员表中文英文类型作用解释长度cbSize整数指定这个结构的大小,以字节为单位。名称lpszDocName整数指向指定文档名称的字符串输出lpszOutput整数指向指定输出文件名称......
  • 极语言3-12绘图启动类、编解码类、串口通讯类、串口系统类、串口时间类、串口配置类—
    中文名字英文名称长度作用解释绘图启动类GdiplusStartupInput24包含GdiplusStartup函数所需的一个参数块。绘图启动类——成员表版本GdiplusVersion整数必须为1回调DebugEventCallback整数可以在调试版本上调用的回调函数的指针背景SuppressBackgroundThread整数指定是否禁止显示G......
  • 数值分区间
    问题:B列小于10大于等于0的返回B列数值;大于等于10小于20的返回11;大于等于20的返回22;大于等于-5小于0的返回-1,大于等于-10小于-5的返回-2AI解决:调整提问语序:B列大于等于20的返回22;大于等于10小于20的返回11;大于等于0小于10的返回B列数值;大于等于-5小于0的返回-1,......
  • java获取7天后的时间戳
    Java获取7天后的时间戳概述在Java开发中,经常会遇到需要获取指定日期之后或之前的时间戳的需求。本文将教会刚入行的小白如何使用Java编写代码获取7天后的时间戳。流程以下是获取7天后时间戳的流程:步骤描述1获取当前日期时间2将当前日期时间加上7天3将加上7......