package com.lolaage.util;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
*
* @author huangye 2011-06-27 计算与日期和时间相关的算法类
*/
public class CalendarUtil {
/* 用于计算日期相关 */
private Calendar c = null;
public CalendarUtil() {
c = Calendar.getInstance();
}
/**
*
* @return 今天是星期几(与数据库中规则一一对应)
*/
public int getWeek() {
/*
* Calendar星期算法是:星期天到星期六 1~7 算法实现思路:
* (向前移动2位刚好和数据库中(周天到周6)0~6与数据库存储的算法(周一到周天1~7中的1~6)对应
* ,Calendar中的0代表周天和数据库中的规则(周天)7对应)
*/
int week = c.get(Calendar.DAY_OF_WEEK) - 1;
/* 数据库中使用的算法是:星期一到星期天是 1~7,所以使用以下算法兼容 */
return week = week < 1 ? 7 : week;
}
/**
* 将Timestamp类型格式化为 yyyy-MM-dd HH:mm
*
* @param date
* @return
*/
public static String getNowTimestamp(Timestamp date) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return dateformat.format(date);
}
public static String getNowDate(Date date) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return dateformat.format(date);
}
/**
*
* @return 当前的月份
*/
public int getMonth() {
/* 在Calendar中月份1~12月是从0~11计算的,需要转换 */
return c.get(Calendar.MONTH) + 1;
}
public int getDay(){
return c.get(Calendar.DAY_OF_MONTH);
}
/**
*
* @return 当前的年份
*/
public int getYear() {
return c.get(Calendar.YEAR);
}
/**
* 获取当前时间Timestamp
*/
public Timestamp getNow() {
return new Timestamp(new Date().getTime());
}
/**
* 获取当前时间 java.sql.Date
*/
public java.sql.Date getNowDate() {
return new java.sql.Date(new Date().getTime());
}
/**
* 获取当前时间精确到秒
*/
public String getNowutilDate() {
SimpleDateFormat dateformat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return dateformat.format(new Date());
}
/**
* 获取当前的日期yyyy-MM-dd
*
* @return
*/
public static String getNowDateDay() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
return dateformat.format(new Date());
}
public static String getNowDateDayNoBar() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd");
return dateformat.format(new Date());
}
public static String getDateDay(Date date) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
return dateformat.format(date);
}
public static Date getCurrentDate() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = dateformat.format(new Date());
Date date = null;
try {
date = dateformat.parse(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
/**
* 获取上月的开始的日期 比如:2011-10-01
*
* @return
*/
public String getAfterDateDayStart() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM");
Date d = new Date();
d.setMonth(d.getMonth() - 1);
return dateformat.format(d) + "-01";
}
/**
* 获取本月的开始的日期 比如:2011-10-01
*
* @return
*/
public String getNowDateDayStart() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM");
return dateformat.format(new Date()) + "-01";
}
/**
* 获取当前月的日期年和月 比如:2011-10
*
* @return
*/
public String getNowDateMonth() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM");
return dateformat.format(new Date());
}
/**
* 获取上个月的日期年和月 比如:yyyy-MM
*
* @return
*/
public String getPreNowDateMonth() {
return this.getYear() + "-" + (this.getMonth() - 1) + "";
}
/**
* 获取上个月的日期年和月 比如:yyyy-MM
*
* @return
*/
public String getPreNowDateMonth2() {
if(this.getMonth()<=10){
return this.getYear() + "-0" + (this.getMonth() - 1) + "";
}else{
return this.getYear() + "-" + (this.getMonth() - 1) + "";
}
}
/**
*
* @return 流水号的日期
*/
public String getBickerCode() {
SimpleDateFormat dateformat = new SimpleDateFormat("yyMMdd");
return dateformat.format(new Date());
}
/**
* 验证该oldDate是否合法 不合法取当前时间
*
* @param oldDate
* @return
* @throws ParseException
*/
@SuppressWarnings("unused")
public Timestamp isNormal(Timestamp oldDate) {
boolean b = false;
int Year = oldDate.getYear();
int Month = oldDate.getMonth() + 1;
int date = oldDate.getDate();
Timestamp now = getNow();
if ((Year >= now.getYear() & Year <= 200) & (Month >= 1 & Month <= 12)
& (date >= 1 & date <= 31)) {
b = true;
} else {
b = false;
}
return b == true ? oldDate : now;
}
public static void main(String[] args) {
CalendarUtil date=new CalendarUtil();
System.out.println(date.getCurrentDate());
}
/**
* 计算传入参数的日期的前i个月份(年份+月份)
*
* @param now
* @return
*/
public static String getMonths(int i) {
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -i);
Date lastMonthSameDay = cal.getTime();// 上个月
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String dateStr = format.format(lastMonthSameDay);
return dateStr;
}
/**
* 获取前一天的日期
* @return
*/
public java.sql.Date getAfterNowDate(){
Date date=new Date();
Calendar ca=Calendar.getInstance();
ca.add(ca.DATE, -1);
Date Afterdate=ca.getTime();
return new java.sql.Date(Afterdate.getTime());
}
/**
* @param date
* @return
*/
public static String getDateStr(Date date) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateformat.format(date);
}
/**
* 获取上一个月的时间点
* @return
*/
public static long getPreviousMonthTime(){
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
ca.setTime(new Date()); //设置时间为当前时间
ca.add(Calendar.MONTH, -1); //月份减1
return ca.getTimeInMillis();
}
/**
* 获取评论的时间格式
* @param commentTime
* @return
*/
public static String getDetailCommentDate(long commentTime){
String dateTime = "";
SimpleDateFormat sf = new SimpleDateFormat("yyyy.MM.dd");
Calendar commentCalendar = Calendar.getInstance();
commentCalendar.setTimeInMillis(commentTime);
Calendar currentCalendar = Calendar.getInstance();
currentCalendar.setTime(new Date());
if(commentCalendar.get(Calendar.YEAR) == currentCalendar.get(Calendar.YEAR)){//评论时间和当前时间是同一年
if((currentCalendar.get(Calendar.MONTH)+1) == (commentCalendar.get(Calendar.MONTH)+1)){//评论时间和当前时间是同月
if(currentCalendar.get(Calendar.DATE) - commentCalendar.get(Calendar.DATE)==2){//前天评论的信息
dateTime = "前天";
}else if(currentCalendar.get(Calendar.DATE) - commentCalendar.get(Calendar.DATE)== 1){//昨天评论的信息
dateTime = "昨天";
}else if(currentCalendar.get(Calendar.DATE) == commentCalendar.get(Calendar.DATE)){//当天评论的信息
dateTime = "今天";
}else{//当月其他日期评论的信息
sf = new SimpleDateFormat("MM.dd");
dateTime = sf.format(commentTime);
}
}else{//是同年但不同月份的评论,时间格式为: 04.01
sf = new SimpleDateFormat("MM.dd");
dateTime = sf.format(commentTime);
}
}else{//往年的评论信息显示年份 如:2012.12.1
dateTime = sf.format(commentTime);
}
return dateTime;
}
}
分享到:
相关推荐
本文将深入探讨如何使用Month Calendar控件来获取用户选择的日期,并提供相关的编程实践。 首先,Month Calendar控件是.NET Framework中的System.Windows.Forms命名空间下的一个控件,可以在设计时通过Visual ...
`Calendar`对象提供了丰富的字段访问器,例如`get()`方法,用于获取指定的日期或时间字段值。以下是获取年、月、日、时、分、秒的示例: ```java int year = calendar.get(Calendar.YEAR); int month = calendar....
由于`Calendar`类是抽象的,我们不能直接实例化它,而是通过其静态方法`getInstance()`获取一个默认的`Calendar`对象,或者通过其具体子类如`GregorianCalendar`创建实例。例如: ```java Calendar calendar = ...
"Calendar 多风格日期输入控件"是一个专门针对JavaScript环境设计的组件,它旨在提高用户体验并简化开发者的工作。这篇内容将深入探讨这个控件的相关知识点,包括其功能、特性、使用方法以及如何自定义样式。 1. **...
`Calendar`类提供了丰富的功能,包括设置和获取日期和时间的各种组件,如年、月、日、小时、分钟、秒和毫秒。此外,它还支持日历字段的计算,如增加或减少特定的时间单位。例如,你可以增加一个月或者减去一天。 `...
需要注意的是,这些方法都依赖于系统时区,如果你需要根据特定时区获取日期,可以使用`ZoneId`和`ZonedDateTime`来处理。例如,要获取北京时区的日期,可以这样做: ```java ZoneId zoneId = ZoneId.of("Asia/...
`Calendar.getInstance()`方法是获取当前日期的静态工厂方法: ```java Calendar calendar = Calendar.getInstance(); ``` 接下来,为了获取指定月份的日期,我们可以使用`add`方法对月份进行调整。在这里,我们不...
2. `get(int field)`:获取指定字段(如月份、日期、小时等)的值。 3. `set(int field, int value)`:设置指定字段的值。 4. `add(int field, int amount)`:在指定字段上增加或减少一定量的时间。 5. `getTime()`...
本篇文章将详细解析如何使用Objective-C获取日期的年、月、日。 首先,我们需要导入`Foundation`框架,它是iOS开发中最基础的框架,包含了日期处理所需的类和方法。在代码中,我们会用到`NSCalendar`、`...
在Java 8中,Oracle对日期时间API进行了重大更新,引入了`java.time`包,以替换原有的`java.util.Date`和`java.util.Calendar`等过时的API。`LocalDate`是这个新包中的核心类之一,专门用于处理不包含时间部分的日期...
例如,用户选择了一个阳历日期,我们可以通过`wx.getCalendar`获取对应的农历日期;反之,如果用户选择了农历日期,我们同样可以获取对应的阳历日期。 为了让用户能够方便地在农历和阳历之间切换,我们可以添加一个...
4. **获取日期字符串**: 将`Calendar`对象转换为日期字符串通常使用`SimpleDateFormat`类。首先,创建一个`SimpleDateFormat`对象,然后调用`format()`方法: ```java SimpleDateFormat sdf = new ...
本篇文章将深入探讨如何在Android应用中使用Calendar类以及与之相关的知识点,包括获取日历的年月日和周、绘制日历界面、处理前后月份以及相关示例代码。 首先,`java.util.Calendar` 是一个抽象类,它提供了日期和...
3. **获取日期**:对应地,`get`方法用于获取这些字段的值。例如,`int year = calendar.get(Calendar.YEAR)`将获取当前设置的年份。 4. **增加/减少日期**:`add`方法可以用来增加或减少某个日期字段。例如,`...
在Java编程语言中,`java.util.Calendar`类是处理日期和时间的重要工具之一。通过`Calendar`类,我们可以轻松地获取...掌握了这些基本概念后,开发者可以在实际项目中灵活运用`Calendar`类来解决与日期相关的业务需求。
`Calendar`类提供了一系列的方法来获取和设置这些字段值,以及进行日期的加减运算。通常情况下,我们通过调用`getInstance()`方法获取一个`Calendar`实例。 #### 二、日期格式化 在Java中,我们可以利用`java.text...
例如,`get`方法可以用来获取日期字段值,`set`方法可以用来设置日期字段值,`add`方法可以用来对日期字段进行加减等。 总结一下,这个知识点涉及到的核心概念有日期的格式化、解析、计算天数差以及遍历日期范围。...
综上所述,`Calendar`类在Java编程中扮演了重要的角色,它提供了处理日期和时间的强大功能,使得开发者能够轻松处理各种日期相关的计算和展示任务。在Eclipse这样的集成开发环境中,配合其优秀的代码辅助和调试工具...
这篇博文“聊一聊Calendar的使用”可能详细介绍了如何利用`Calendar`进行日期计算、时间格式化以及其他相关操作。`Calendar`类在实际开发中非常常见,尤其在需要对日期进行复杂处理时,如计算两个日期之间的差值、...
`Calendar`类提供了一系列的功能来帮助开发者处理复杂的日期计算问题,比如日期的加减、获取特定日期组件等。 #### 二、Calendar类的基本概念 `Calendar`类是一个抽象类,它代表了一个特定时刻(瞬间)的具体日期...