日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 时间的相关转换操作

發布時間:2024/7/23 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 时间的相关转换操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于時間的操作,寫了個util
主要用于預測的時候,時間段的確定
預測的時間段,需要明確的規定范圍,由于業務的促銷都是整點開始,所以我們的預測時間段,也是從整點開始
所以就要將時間分為多個整段,比如一分鐘一段,那么就是2018-06-18 00:00:00 到2018-06-18 00:01:00 就是一段
那么在確定一分鐘為一段的前提下,我們就要將這一分鐘內所有數據都歸到這一分鐘內
下面的util就有根據隨機時間,確定這個時間是哪個段的
比如:
當前時間是2018-06-18 00:00:30 ,時間段為一分鐘
根據下面的的方法,就可以得到2018-06-18 00:00:00和2018-06-18 00:01:00,也就是這個時間所在的時間區域

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 時間片分割工具類**/ public class TimeUtil {/*** 將一天的時間分割成等分的若干段,獲得總段數** @param second 每個時間段的長度,單位秒* @return 返回一天的段數, 結果取加一法的結果*/public static int getAllSplitNums(int second) {return (24 * 60 * 60 - 1) / second + 1;}/*** 根據每段的時間和當前時間,算出當前時間在第幾段* 時間段區間默認左閉右開* eg:如果5分鐘為一個時間段的話,那么[00:00:00,00:05:00)就在第一段,返回1;[00:05:00,00:10:00)就在第二段,返回2** @param time* @param second* @return*/public static int getOneNum(long time, int second) {int secondNum = getSecondNum(time);return (secondNum - 1) / (second * 1000) + 1;}/*** 根據long類型的時間,獲取時分秒的秒數** @param time long類型的時間* @return 時分秒的秒數*/public static int getSecondNum(long time) {Date date = new Date(time);SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss:SSS");String format = simpleDateFormat.format(date);String[] split = format.split(":");int secondNum = 0;secondNum += Integer.valueOf(split[0]) * 60 * 60 * 1000;secondNum += Integer.valueOf(split[1]) * 60 * 1000;secondNum += Integer.valueOf(split[2]) * 1000;secondNum += Integer.valueOf(split[3]);return secondNum;}/*** 根據但當前時間和時間段長度,獲得當前時間所在的時間段** @param reqTime 入參時間,eg:1535551963527,毫秒級* @param second 間隔時間* @return 返回入參時間所在的時間段,左開右閉*/public static String getSameTime(String reqTime, int second) {String s = null;try {Long reqTimeLong = Long.valueOf(reqTime);//獲得這個時間在當天的第幾段int secondNum = getSecondNum(reqTimeLong);long dayTime = reqTimeLong - secondNum;int oneNum = getOneNum(reqTimeLong, second);long end = dayTime + oneNum * second * 1000;long start = dayTime + (oneNum - 1) * second * 1000;SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");s = sdf2.format(start) + ":" + sdf2.format(end);} catch (Exception e) {e.printStackTrace();}return s;}/*** 是不是整時段,比如時間段是30,那么只有秒數是00或者30的才會返回true,其他情況返回false** @param timeInterval 時間段,單位秒* @return 布爾值*/public static Boolean isClock(Integer timeInterval) {if(timeInterval == null || timeInterval.equals(0)){return null;}long now = System.currentTimeMillis();SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHH-mm-ss");String nowStr = sdf2.format(now);String[] split = nowStr.split("-");//只取分秒int res = Integer.valueOf(split[1]) * 60 + Integer.valueOf(split[2]);return res % timeInterval == 0;}/*** 根據本端時間獲取下段時間* @param time 本段時間,格式必須是yyyyMMddHHmmss_yyyyMMddHHmmss的* @return 返回下段時間,格式也是yyyyMMddHHmmss_yyyyMMddHHmmss*/public static String getNextTime(String time){String nextTime = null;try {String[] split = time.split(":");SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");Date startDate = sdf.parse(split[0]);System.out.println("startDate:"+startDate);Date endDate = sdf.parse(split[1]);System.out.println("endDate:"+endDate);int timeInterval = (int) (endDate.getTime() - startDate.getTime()) / 1000;System.out.println("timeInterval:"+timeInterval);long nextTimeLong = endDate.getTime() + 1;nextTime = getSameTime(nextTimeLong + "", timeInterval);} catch (Exception e) {e.printStackTrace();}return nextTime;} }

總結

以上是生活随笔為你收集整理的java 时间的相关转换操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。