java 怎么获取一个月的日期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎么获取一个月的日期相关的知识,希望对你有一定的参考价值。
比如,给出2013年10月,怎么获取获取2013年10月1日到2013年10月31日的日历信息
/***
* 获取指定月份的日历信息
*
* @param year
* 年
* @param month
* 月
* @return
*/
public static int[] getMonthCalendar(int year, int month)
Calendar cl = Calendar.getInstance();
cl.set(year, month, 1);
int firstDay = cl.getMinimum(Calendar.DAY_OF_MONTH);
int lastDay = cl.getMaximum(Calendar.DAY_OF_MONTH);
int[] day = new int[lastDay];
for (int i = 0; i < lastDay; i++)
day[i] = i + firstDay;
return day;
参考技术A Calendar cal = Calendar.getInstance();
// 不加下面2行,就是取当前时间前一个月的第一天及最后一天
cal.set(Calendar.YEAR,2012) ;
cal.set(Calendar.MONTH, 6);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
Date lastDate = cal.getTime();//当前月最后一天
cal.set(Calendar.DAY_OF_MONTH, 1);
Date firstDate = cal.getTime();//当前月第一天 参考技术B //month为两位,例如01
public static Date[] getDates(String year, String month)
Calendar cal = Calendar.getInstance();
//1.跳转到本月第一天
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
sdf.parse(year+"-"+month);
cal.setTime(date);
int maxDate = cal.getMaximum(Calendar.DAY_OF_MONTH);//获取本月日期值
追问
你能把代码全写出来吗?谢谢
追答public static Date[] getDates(String year, String month)
int maxDate = 0;
Date first = null;
try
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
first = sdf.parse(year + month);
cal.setTime(first);
maxDate = cal.getMaximum(Calendar.DAY_OF_MONTH);
catch (Exception e)
e.printStackTrace();
Date[] dates = new Date[maxDate];
for (int i = 1; i <= maxDate; i++)
dates[i - 1] = new Date(first.getTime());
first.setDate(first.getDate() + 1);
return dates;
public static void main(String[] args)
getDates("2013", "05");
为什么都是31个日期?像9月份,只有30天,可是结果连10月1日也打印出来
晕,获取一个月的天数用getActualMaximum(Calendar.DAY_OF_MONTH)好不好
* 获取前一个月的日期
*
* @return 前一个月的日期
*/
public static String getTodayBeforeMonth()
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date currentTime = new Date();// 得到当前系统时间
long now = currentTime.getTime();// 返回自 1970 年 1 月 1 日 00:00:00 GMT
// 以来此Date 对象表示毫秒数
currentTime = new Date(now - 86400000 * 24);
long now1 = currentTime.getTime();
currentTime = new Date(now1 - 86400000 * 6);
String current = formatter.format(currentTime);
return current;
public static void main(String[] args)
System.out.println(DateUtil.getTodayBeforeMonth());
追问
我好像没有DateUtil这东西啊,能上传个吗?
追答这就是个类名而已~
你需要的是getdate这个方法
蜂巢获取每个月的结束日期
【中文标题】蜂巢获取每个月的结束日期【英文标题】:hive get each month end date 【发布时间】:2017-12-15 16:23:25 【问题描述】:我想要每个月的最后一个日期,例如 1 月 31 日、2 月 28 日等。 我在下面尝试了 current_date 并且它可以工作,但是当我使用我的日期列时它返回 null:
SELECT datediff(CONCAT(y, '-', (m + 1), '-', '01'), CONCAT(y, '-', m, '-', '01')) FROM
(SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m,
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y,
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2 ) t
返回:
_c0
NULL
SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m,
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y,
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2) t
返回:
m | y | _c2|
3 |2017| 21|
提前致谢。
【问题讨论】:
Find last day of a month in Hive的可能重复 select last_day(current_date) - 返回完整日期 2017-12-31 ,我只需要 31 所以除非我 substr 我不会得到 31 hive 中有日历实用程序,请尝试使用 hive UDF 函数 【参考方案1】:使用last_day()
和day()
函数:
hive> select day(last_day(current_date)) ;
OK
31
Time taken: 0.079 seconds, Fetched: 1 row(s)
在应用last_day()
之前应用to_date()
转换您的列。
【讨论】:
以上是关于java 怎么获取一个月的日期的主要内容,如果未能解决你的问题,请参考以下文章
Java语言,已知一个年月日的日期,获取该日期是这一年的多少天...........