package com.shuangxi.test; import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算, * 这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入。 * @author cshuangxi double类型的算术util */ public final class ArithDoubleUtil { // 默认除法运算精度 private static final int DEF_DIV_SCALE = 2; // 这个类不能实例化 private ArithDoubleUtil() {} /** * 提供精确的加法运算。 * @author cshuangxi * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * @author cshuangxi * * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * @author cshuangxi * * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */ public static double mul(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * 提供精确的乘法运算。 * @author cshuangxi * * @param v1 被乘数 * @param v2 乘数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的积 */ public static double mul(double v1, double v2, int scale) { double r = mul(v1, v2); return round(r, scale); } /** * 提供(相对)精确的除法运算,当发生除不尽的情况时, * 精确到小数点以后10位,以后的数字四舍五入。 * @author cshuangxi * * @param v1 被除数 * @param v2 除数 * @return 两个参数的商 */ public static double div(double v1, double v2) { return div(v1, v2, DEF_DIV_SCALE); } /** * 提供(相对)精确的除法运算。 * 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。 * @author cshuangxi * * @param v1 被除数 * @param v2 除数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */ public static double div(double v1, double v2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理。 * @author cshuangxi * * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } }
package com.shuangxi.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TimeUtil { /** * 计算endTime-beginTime之间的天数 ,time格式:yyyy-MM-dd HH:mm:ss * @author cshuangxi * @param beginTime 开始时间 * @param endTime 结束时间 * @return * @throws ParseException */ public static double getSubTimeDay (String beginTime, String endTime) throws ParseException { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date beginDate = df.parse(beginTime); Date endDate = df.parse(endTime); double day = 0; if (endDate.getTime() > beginDate.getTime()) { day = ArithDoubleUtil.div((double)(endDate.getTime() - beginDate.getTime()), (24*60*60*1000), 2); } return day; } }
package com.shuangxi.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test1 { public static void main(String[] args) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String endTime = df.format(new Date()); String beginTime = "2015-05-06 17:00:00"; try { double subTime = TimeUtil.getSubTimeDay(beginTime, endTime); System.out.println(subTime); System.out.println(((new Date()).getTime())/(24*60*60*1000)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//输出:0.93
16562
相关推荐
### Java 计算时间差的方法 在 Java 中计算两个日期之间的时间差是常见的需求之一,尤其是在需要处理时间序列数据的应用程序中。本文将详细介绍几种不同的方法来计算两个日期之间的差值,并提供相应的代码示例。 #...
计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统当前时间计算系统...
首先,让我们来看Java版本的日出日落时间计算。Java提供了丰富的库来处理日期和时间,如Java 8引入的`java.time`包。通常,计算日出日落会涉及到地理坐标(经度和纬度)以及当地时区。开发者可能需要利用`java.time....
JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...
java编程计算有效工作时间的方法.java
这篇博客“转 Java校正电脑时间(java 时间同步)”主要探讨了如何在Java中实现这一功能。 首先,Java中的日期和时间API包括`java.util.Date`、`java.util.Calendar`,以及从Java 8开始引入的更现代的`java.time`包。...
java计算两个时间(yyyy-MM-dd HH:mm:ss)相差月数两个时间格式可为年月日时分秒
### Java 判断时间大小知识点详解 #### 一、前言 在Java开发中,经常会遇到比较日期或时间大小的问题,特别是在处理用户输入的数据时。本文将详细介绍如何在Java中实现日期与时间的比较,包括使用`...
相对时间计算是指获取当前时间与过去或未来某个时间点之间的差异,通常以“几天前”、“几年前”这样的形式展示。Java提供了一些内置类来帮助我们进行这类计算,如`java.util.Date`、`java.util.Calendar`以及`java....
Java获取时间是一个重要的编程任务,尤其在开发过程中处理日期和时间相关的逻辑时。Java提供了多种方式来操作和格式化时间,这些方法分布在不同的类和包中。以下是对这些知识点的详细说明: 1. **基础时间类:** -...
Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现,例如 ArrayList、LinkedList 等...
Java作为一种广泛使用的编程语言,提供了丰富的库和工具来实现时间序列算法。本篇文章将深入探讨时间序列预测的基本原理,Java实现的关键步骤,以及如何通过实际的代码示例进行实践。 时间序列数据是按特定时间顺序...
计算机时间同步 Internet时间同步 java源码 运行程序,计算机时间与Internet时间同步 用于对时间要求精确系统的时间同步 可做成定时任务 定期对服务器进行时间校准
每个任务需要一个唯一的ID,这个ID与时间轮的槽位关联,根据任务的延迟时间计算出对应的槽位。当时间轮的指针移动到某个槽位时,触发该槽位的任务。为了处理精度问题,可以采用多级时间轮,增加更多的环来提高精度。...
使用Java 8的日期时间API(`java.time`包)来处理日期和时间,如计算两个日期之间的天数,判断是否为工作日等。同时,为了提高效率和减少数据库交互,可以利用Redis的特性,将部分计算结果缓存起来。 综上所述,这...
java代码-使用java解决Java计算一段程序的运行时间的源代码 ——学习参考资料:仅用于个人学习使用!
本示例“iOS根据java时间戳计算时间的demo”将指导开发者如何有效地进行这种转换,以便在iOS应用中正确展示日期和时间。这里我们将深入探讨iOS中的时间戳处理和UITextField的accessoryView配置。 首先,让我们来...
在Java编程领域,电费计算程序通常涉及到基础的数学计算和条件判断,这是一类常见的实用小程序。本项目名为"java电费计算",其主要目的是通过Java语言实现一个电费的自动计算功能,根据不同的用电量范围来确定对应的...
### Java中计算两个日期相差几天 在Java编程中,经常需要处理与日期和时间相关的操作。其中一项常见的需求就是计算两个日期之间的差距。本篇文章将详细介绍如何在Java中计算两个日期相差几天,并深入探讨示例代码中...
Java编程语言在处理日期和时间方面提供了强大的支持,这使得我们能够轻松地计算中国的24节气。24节气是中国传统历法的重要组成部分,它根据太阳在黄道上的位置来划分一年的时间,反映了四季的变化和农事活动的周期。...