工具類:時間和日期的獲取
public class DateUtil { public static final String DATE_FORMAT = "yyyy-MM-dd"; private static SimpleDateFormat sdf = new SimpleDateFormat("MM/dd"); private static SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd"); /** * 獲取當前時間 */ public static long getCurrentTime() { try { return SystemClock.elapsedRealtime(); } catch (Exception var3) { var3.printStackTrace(); return System.currentTimeMillis(); } } public static String getCurrentTime(String format) { return new SimpleDateFormat(format).format(new Date(getCurrentTime())); } /** * 獲取今天(yyyy-MM-dd)的時間戳 */ public static long getCurrentDate(Context context) { String currentTime = DateUtil.getCurrentTime(DateUtil.DATE_FORMAT); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date currentDate = df.parse(currentTime); return currentDate.getTime(); } catch (ParseException e) { e.printStackTrace(); } return new Date().getTime(); } /** * 獲取某年第一天日期 */ public static Date getYearFirst(int year) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); Date currYearFirst = calendar.getTime(); return currYearFirst; } /** * 獲取某年最後一天日期 */ public static Date getYearLast(int year) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); calendar.roll(Calendar.DAY_OF_YEAR, -1); Date currYearLast = calendar.getTime(); return currYearLast; } /** * 獲取當前時間所在年的週數 */ public static int getWeekOfYear(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime(date); return c.get(Calendar.WEEK_OF_YEAR); } /** * 獲取當前時間所在年的最大週數 */ public static int getMaxWeekNumOfYear(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 23, 59, 59); return getWeekOfYear(c.getTime()); } /** * 獲取某年的第幾周的開始日期 */ public static Date getFirstDayOfWeek(int year, int week) { Calendar c = getFirstDayOfWeek(year); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7); return getFirstDayOfWeek(cal.getTime()); } /** * 獲取某年的第幾周的結束日期 */ public static Date getLastDayOfWeek(int year, int week) { Calendar c = getFirstDayOfWeek(year); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7); return getLastDayOfWeek(cal.getTime()); } /** * 獲取一年開始的第一週的週一 * 第一週如果有四天或以上就算是該年的第一週, * 否則就是上一年的最後一週(用於跨年判斷第一週開始時間) */ public static Calendar getFirstDayOfWeek(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.JANUARY, 1, 0, 0, 0); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); // 如果1月1日是週五,週六或者週日,那麼這一週是上一年最後一週,重新計算今年的第一週開始的週一 if (dayOfWeek == Calendar.FRIDAY || dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) { while (c.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { c.add(Calendar.DAY_OF_YEAR, 1); } } return c; } /** * 獲取當前時間所在周的開始日期 */ public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday return c.getTime(); } /** * 獲取當前時間所在周的結束日期 */ @SuppressLint("WrongConstant") public static Date getLastDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday return c.getTime(); } /** * 判斷該年的最後一天(xxxx年12月31日)所在的周是不是當年的最後一週, * 否則就是下一年的第一週 */ public static boolean isLastDayInYearLastWeek(Date lastDate) { boolean result = false; Calendar c = new GregorianCalendar(); c.setTime(lastDate); int lastDay = c.get(Calendar.DAY_OF_WEEK); // 當lastDay是週四、五、六、日, 它所在周就是是該年的最後一週 if (lastDay == Calendar.THURSDAY || lastDay == Calendar.FRIDAY || lastDay == Calendar.SATURDAY || lastDay == Calendar.SUNDAY) { result = true; } return result; } /** * 獲取一年的最後一天 */ public static Date getLastDayOfYear(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 0, 0, 0); return c.getTime(); } /** * 判斷當前時間是否在[startTime, endTime]區間,注意時間格式要一致 */ public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) { if (Math.abs(nowTime.getTime() - startTime.getTime()) < 1000 || Math.abs(nowTime.getTime() - endTime.getTime()) < 1000) { return true; } Calendar date = new GregorianCalendar(); date.setTime(nowTime); Calendar begin = new GregorianCalendar(); begin.setTime(startTime); Calendar end = new GregorianCalendar(); end.setTime(endTime); if (date.after(begin) && date.before(end)) { return true; } else { return false; } } /** * 獲取一年第一週的第一天 和 最後一週的最後一天 */ public static Date[] getYearMinDayAndMasDay(int currentYear) { Date[] resultDate = new Date[2]; List<Week> weeks = getWeeksByYear(currentYear); Week week0 = weeks.get(0); Week week1 = weeks.get(weeks.size() - 1); Date minDate = week0.getWeekBeginDate(); Date maxDate = week1.getWeekEndDate(); resultDate[0] = minDate; resultDate[1] = maxDate; return resultDate; } /** * 根據當前日期算出所在周的開始時間和結束時間 */ public static String[] getWeekStartAndEndDay(Date currentDate) { String[] weekDay = new String[2]; Date firstDayOfWeek = DateUtil.getFirstDayOfWeek(currentDate); Date lastDayOfWeek = DateUtil.getLastDayOfWeek(currentDate); weekDay[0] = sdf2.format(firstDayOfWeek.getTime()); weekDay[1] = sdf2.format(lastDayOfWeek.getTime()); return weekDay; } /** * 獲取一年中每週的範圍 */ public static List<Week> getWeeksByYear(int currentYear) { ArrayList<Week> weekList = new ArrayList<>(); Date lastDay = DateUtil.getLastDayOfYear(currentYear); boolean result = DateUtil.isLastDayInYearLastWeek(lastDay); // 一年最多有53個星期 for (int i = 0; i < 53; i++) { Date firstDayOfWeek = DateUtil.getFirstDayOfWeek(currentYear, i); Date lastDayOfWeek = DateUtil.getLastDayOfWeek(currentYear, i); Calendar startCal = Calendar.getInstance(); startCal.setTime(firstDayOfWeek); Calendar endCal = Calendar.getInstance(); endCal.setTime(lastDayOfWeek); String WeekNumStr = String.valueOf(i + 1); if (i < 9) { WeekNumStr = "0" + (i + 1); } Week everyWeek = new Week(); everyWeek.setBeginYear(startCal.get(Calendar.YEAR)); everyWeek.setEndYear(endCal.get(Calendar.YEAR)); everyWeek.setWeekBegin(sdf.format(startCal.getTime())); everyWeek.setWeekEnd(sdf.format(endCal.getTime())); everyWeek.setWeekNum(WeekNumStr); if (i <= 50) { weekList.add(everyWeek); } if (i > 50) { // 判斷最後一天是否在這區間內 if (DateUtil.isEffectiveDate(lastDay, firstDayOfWeek, lastDayOfWeek)) { // 判斷該年的最後一天(xxxx年12月31日)所在的周是不是當年的最後一週 if (result) { weekList.add(everyWeek); } break; } else { weekList.add(everyWeek); } } } return weekList; } }
public class Week { private String weekNum; private int beginYear; private int endYear; // 周開始日期 格式: MM/dd private String weekBegin; // 周結束日期 格式: MM/dd private String weekEnd; public String getWeekNum() { return weekNum; } public void setWeekNum(String weekNum) { this.weekNum = weekNum; } public int getBeginYear() { return beginYear; } public void setBeginYear(int beginYear) { this.beginYear = beginYear; } public int getEndYear() { return endYear; } public void setEndYear(int endYear) { this.endYear = endYear; } public String getWeekBegin() { return weekBegin; } public void setWeekBegin(String weekBegin) { this.weekBegin = weekBegin; } public String getWeekEnd() { return weekEnd; } public void setWeekEnd(String weekEnd) { this.weekEnd = weekEnd; } @Override public String toString() { return weekBegin + " ~ " + weekEnd + "(第" + weekNum + "周)"; } /** * 獲取周開始日期 (yyyy/MM/dd) * @return */ public Date getWeekBeginDate() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); String strDate = beginYear + "/" + weekBegin; Date date = new Date(); try { date = formatter.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 獲取周結束日期 (yyyy/MM/dd) * @return */ public Date getWeekEndDate() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); String strDate = endYear + "/" + weekEnd; Date date = new Date(); try { date = formatter.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 獲取周開始日期 (yyyy/MM/dd) * @return */ public String getWeekBeginStr() { String strDate = beginYear + "/" + weekBegin; return strDate; } /** * 獲取周結束日期 (yyyy/MM/dd) * @return */ public String getWeekEndStr() { String strDate = endYear + "/" + weekEnd; return strDate; } }
相關推薦
工具類:時間和日期的獲取
public class DateUtil { public static final String DATE_FORMAT = "yyyy-MM-dd"; private static SimpleDateFormat sdf = new SimpleDa
【TOJ 5247】C++實驗:時間和日期類
OS 日期類 一行 ID 表示 pac 日期 style pub 描述 用C++實現日期類CDate和時間類CTime,並在次基礎上利用多繼承實現日期時間類CDateTime,使其能輸出樣例信息。 主函數裏的代碼已經給出,請補充完整,提交時請勿包含已經給出的代碼。 int
java中正則表示式工具類:Pattern和Macher
原地址 java.util.regex是一個用正則表示式所訂製的模式來對字串進行匹配工作的類庫包。 1.簡介: java.util.regex是一個用正則表示式所訂製的模式來對字串進行匹配工作的類庫包。 它包括兩個類:Pattern和Matcher
localtime()函式:獲取當前時間和日期並轉換為本地時間
核心程式碼能一直獲取一個當前時間的表示, 通過檢視 jifies 的值. 常常地, 這個值只代表從最後一次啟動以來的時間, 這個事實對驅動來說無關, 因為它的生命週期受限於系統的 uptime. 如所示, 驅動可以使用 jiffies 的當前值來計算事件之間的時間間隔(例如, 在輸入驅動中從單擊中
10 友盟專案--日期工具類、時間對齊、地理類庫Geolite
1.日期工具類 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /*
java中的時間和日期類
日期、時間類 Date類 java8中的構造器,之前有六個但是其餘四個已經不推薦使用了。 構造器 功能 Date() 生成一個代表當前日期時間的Date物件
js獲取一天的開始時間和結束時間和日期與字串、數值之間的轉換
var time="2016-12-29"; var dayStart = Date.parse(new Date(time));//2016-12-29 0:0:0 var dayEnd = new Date().setTime((dayStart/1000+24*60*60-1
工具類——Java時間戳與日期格式字串的互轉
import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 時間戳轉換成日期格式字串 * @param seconds 精確到
ABAP 自動獲取系統時間和日期
有些程式在新增或者修改資料的時候需要記錄建立和修改時間,當然這些欄位我們不可能手動輸入,這就要在提交資料時獲取系統時間,用如下module就可以完成此操作。 *--------------------------------------------------
Pandas時間序列:頻率和日期偏移量
import pandas as pd import numpy as np 一、介紹 pandas中的頻率是由一個基礎頻率(例如“日”、“月”)和一個乘陣列成。 基礎頻率通常以一個字串別名表
Android工具類:獲取手機的資料夾及檔案列表
效果圖: package wuwang.tools.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja
14.C語言中time函式和localtime獲取系統時間和日期
C語言中time函式和localtime獲取系統時間和日期可以通過time()函式來獲得計算機系統當前的日曆時間(Calendar Time),處理日期時間的函式都是以本函式的返回值為基礎進行運算。1. time 函式 返回1970-1-1, 00:00:00以來經過的秒數
JS獲取當前時間和日期
con mes cond class min 獲取 .get () clas 當前時間和日期 var myDate = new Date(); myDate.getYear(); //獲取當前年份(2位)
java工具類,在Windows,Linux系統獲取電腦的MAC地址、本地IP、電腦名
copy iter 去掉m [] equals linu stat cli catch package com.cloudssaas.util; import java.io.BufferedReader; import java.io.IOException;
iOS學習筆記37-時間和日期計算
htm chinese 區域 nsis ios geo 代號 keyword 轉換 一、時間和日期計算 我們在應用開發中,時常須要和時間打交道,比方獲取當前時間,獲取兩個時間點相隔的時間等等,在iOS開發中與時間相關的類有例如以下幾個: 1. NSD
工具類:關於如何找到兩個List數組中不同的數據的算法!
開發人員 uri print clas 數據結構 blank _id integer public 找到兩個List數組中不同的數據的算法! import java.util.ArrayList;import java.util.HashMap;import java.ut
CentOS7--配置時間和日期
缺省 顯示 start 運行 shang 使用 lean tle ice CentOS7提供三個命令行工具,可用於配置和顯示有關系統日期和時間的信息。 timedatectl:實用程序是紅帽企業版Linux 7中的新增功能,也是systemd其中的一部分。 d
JAVA中常用IO流類:FileInputStream和FileOutputStream
table string [] 文件中 讀取 描述符 off fis 系統資源 FileInputStream 用於讀取本地文件中的字節數據,繼承自InputStream類 構造方法摘要 FileInputStream(File file) 通
Java之工具類:判斷對象是否為空或null
sar 判斷 ins == span urn lean color style 1 import java.lang.reflect.Array; 2 import java.util.Collection; 3 import java.util.Map; 4
010 有順序的Map的實現類:TreeMap和LinkedHashMap
隨機 子類 hashcode col 線程 tab www. 多個 最好 作者:nnngu GitHub:https://github.com/nnngu 博客園:http://www.cnblogs.com/nnngu 簡書:https://www.jianshu.com