Calendar详解

分数阶傅里叶变换(FRFT)原理与MATLAB实现:chirp信号检测与滤波实战 在信号处理中,傅里叶变换是分析平稳信号的经典工具,但面对频率随时间变化的非平稳信号,如线性调频(chirp)信号,其频谱能量分散,难以准确估计参数。分数阶傅里叶变换(FRFT)通过旋转时频平面,能够在任意角度观察信号,使chirp信号能量聚焦成尖峰,从而有效解决这一问题。基于Ozaktas快速算法的MATLAB实现,具有O(N log N)计算复杂度,支持阶数扫描、最优阶数搜索以及分数阶域滤波等操作。该技术广泛应用于雷达、声呐、通信和时频分析领域,尤其适用于低信噪比下的chirp信号检测与参数估计。本文详细 阅读详情

定义

Calendar 类是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

常用API

这里写图片描述

设置指定的一个时间

void set(int year,int month,int date);
void set(int year,int month,int date,int hour,int minute);
void set(int year,int month,int date,int hour,int minute,int second);

测试:

@Test
public void setTest(){
    Calendar calendar = Calendar.getInstance();     
    calendar.clear();     
    calendar.set(Calendar.YEAR,2017);     
    calendar.set(Calendar.MONTH,1);//注意,Calendar对象默认一月为0  
    calendar.set(Calendar.DATE, 20);
    calendar.set(Calendar.HOUR, 16);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.SECOND, 20);

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
    Date date = calendar.getTime();    
    System.out.println(df.format(date));  //2017-02-20 16:30:20
}

得到年月日、时分秒、星期等信息

主要API:

int get(int field);

其中,参数 field 的值由 Calendar 类的静态常量决定。其中:YEAR 代表年,MONTH 代表月,HOUR 代表小时,MINUTE 代表分,如:

calendar.get(Calendar.MONTH); //返回值为 0 代表当前日历是一月份,如果返回 1 代表二月份,依此类推
 get(Calendar.DAY_OF_MONTH) ; //获得这个月的第几天    
 get(Calendar.DAY_OF_WEEK); //获得这个星期的第几天    
 get(Calendar.DAY_OF_YEAR); //获得这个年的第几天    
 getTimeMillis(); //获得当前时间的毫秒表示

测试:

@Test
public void getTest(){
     Calendar cal = Calendar.getInstance();
     //当前时间:2017-2-20 16:38:54.146
     System.out.println(cal.get(Calendar.DATE));   //今天是20号
     System.out.println(cal.get(Calendar.DAY_OF_MONTH));   //今天是当前月的第20天 
     System.out.println(cal.get(Calendar.DAY_OF_WEEK));   //今天是当前周的第2天 (从星期天开始计算,如果今天星期一,那么返回2)  
     System.out.println(cal.get(Calendar.DAY_OF_YEAR));   //今天是一年的第51天
     System.out.println(cal.get(Calendar.HOUR));   //现在是4点(12小时制)
     System.out.println(cal.get(Calendar.HOUR_OF_DAY));   //现在是几点     24小时制,一般使用这个属性赋值  输出16
     System.out.println(cal.get(Calendar.MILLISECOND));   //现在是146毫秒
     System.out.println(cal.get(Calendar.MINUTE));   //现在是38分
     System.out.println(cal.get(Calendar.SECOND));   //现在是54秒
     System.out.println(cal.get(Calendar.WEEK_OF_MONTH));   //现在是一个月中的第4周
     System.out.println(cal.get(Calendar.WEEK_OF_YEAR));   //现在是一个年中的第8周
     System.out.println(cal.get(Calendar.MONTH)+1);   //现在是2月份(获取需要 +1,赋值时需要 -1)
}

Calendar与Date

Calendar转为Date

@Test
public void Cal2Date(){  
     Calendar cal=Calendar.getInstance();    
     Date date=cal.getTime();
     System.out.println(date); //Mon Feb 20 15:55:08 CST 2017
}

Date转为Calendar

@Test
public void Date2Cal(){
    Date date = new Date();    
    Calendar cal = Calendar.getInstance();    
    cal.setTime(date); 
    System.out.println(cal.getTimeInMillis());  //1487581029733
}

计算两个时间之间相隔天数

两个日历Calendar
@Test
public void diff2Canlendar(){
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(Calendar.DATE,1); //设置时间为2017-2-1...
    Calendar calendar2 = Calendar.getInstance(); //当前时间为2017-2-20

    //确保calendar1在calendar2之前    
    if(calendar1.after(calendar2)){    
        Calendar cal= calendar1;    
        calendar1 = calendar2;    
        calendar2 = cal;    
    }    
     //分别得到两个时间的毫秒数    
    long calendar1Mill = calendar1.getTimeInMillis();    
    long calendar2Mill = calendar2.getTimeInMillis();    

    long millSecond= calendar2Mill-calendar1Mill;        
    //根据毫秒数计算间隔天数    
    System.out.println( (int)(millSecond/(1000*60*60*24)));  //结果为19  
}
两个时间Date
@Test
public void diff2Date(){  
    Date date1 = new Date(1487000000000L);
    Date date2 = new Date(); //1487582726736

    if(date1.after(date2)){
        Date date = date1;
        date1 = date2;
        date2 = date;
    }
    long date1Mill = date1.getTime();
    long date2Mill = date2.getTime();
    long millSecond = date2Mill - date1Mill;
    System.out.println((int)(millSecond/(1000*60*60*24))); //6
}

GregorianCalendar 类

定义

GregorianCalendar 是一个具体实现 Calendar 类的类,该类实现了公历日历。

@Test
public void calendarSuperClass(){
    Calendar calendar = Calendar.getInstance();  
    if (calendar instanceof GregorianCalendar){  //true
        System.out.println("It is an instance of GregorianCalendar"); 
    }  
}

Calendar 类的 getInstance() 方法返回一个 GregorianCalendar,它被初始化为默认的地域和时区下的当前日期和时间。
GregorianCalendar 类定义了两个字段:AD 和 BC,分别代表公元前和公元后。其默认的构造方法 GregorianCalendar() 以默认的地域和时区的当前日期和时间初始化对象,另外也可以指定地域和时区来建立一个 GregorianCalendar 对象,如:

GregorianCalendar(Locale locale);
GregorianCalendar(TimeZone timeZone);
GregorianCalendar(TimeZone timeZone,Locale locale);

附加API

GregorianCalendar 类提供了 Calendar 类中所有的抽象方法的实现,同时还提供了一些附加的方法,其中用来判断闰年的方法为:

Boolean isLeapYear(int year);

CalendarUtil.java

import java.util.Calendar;
public class CalendarUtil {
    /**
     * 计算指定日期为当年第几周
     * @param year      指定的年份
     * @param month     指定的月份
     * @param day       指定的日
     * @return          指定日期为当年的第几周
     */
    public static int caculateWeekOfYear(int year,int month,int day){
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month - 1);
        c.set(Calendar.DATE, day);
        return c.get(Calendar.WEEK_OF_YEAR);
    }


    /**
     * 获取本月第一天是星期几
     * @return
     */
    public static int getWeekOfFirstDay(Calendar c){
        Calendar calendar = c;
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.get(Calendar.DAY_OF_WEEK);
    }


    /**
     * 获取本月1号是该年的第几周
     * @return
     */
    public static int getMonthStartWeek(Calendar c){
        Calendar calendar = c;
        calendar.set(Calendar.DATE, 1);
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }

    /**
     * 获取当天是该年的第几周
     */
    public static int getCurrentWeekOfYear(){
        Calendar calendar = Calendar.getInstance();
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }

    /**
     * 获取上月的总天数
     * @return
     */
    public static int getLastMonthDays(Calendar c){
        Calendar calendar = c;
        calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取指定月份的总天数
     * @return
     */
    public static int getCurrentMonthDays(int month){
        Calendar c = Calendar.getInstance();
        c.set(Calendar.MONTH, month);
        return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取指定年份有多少周
     * @param year
     * @return
     */
    public static int getTotalWeekOfYear(int year){
        Calendar c = Calendar.getInstance();
        return c.getActualMaximum(Calendar.WEEK_OF_YEAR);
    }

    /**
     * 判断指定月份是否是当前月
     * @param month
     * @return
     */
    public static boolean isCurrentMonth(int month){
        Calendar c = Calendar.getInstance();
        return (c.get(Calendar.MONTH) == month)?true:false;
    }

    /**
     * 计算指定的月份共有多少天
     */
    public static int getTotalDaysOfMonth(int year, int month){
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DATE, 1);
        return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
}
Java Calendar类的详解及使用实例 主要介绍了Java Calendar类的详解及使用实例的相关资料,需要的朋友可以参考下 立即下载

相关推荐

Honeywell EPKS 核心功能块组态与执行调度实战解析

本文深入解析Honeywell EPKS系统的核心功能块组态与执行调度技术,涵盖控制模块(CM)、顺序控制模块(SCM)和输入输出模块(IOM)的配置方法。通过实战案例分享执行顺序(ORDERINCM)和CEE执行周期的优化策略,帮助工程师提升工业自动化系统的控制精度和运行效率。

weixin_28724319的博客 414

【Java-----日期类(三)之Calendar类详解】

Calendar类是Java.util包中提供的一个抽象类,该类从JDK1.1开始出现,作为Date类的替代方案,Calendar类中包含了对不同国家地区日历的处理,Calendar类常见的子类为:java.util.GregorianCanlendar;获取Calendar对象一般使用类中提供的静态方法:getInstance(),该方法返回了Calendar的子类对象

qq_45071131的博客 1万+

数字频率计设计中的常见误区:从VHDL代码到硬件实现的避坑指南

本文深入探讨了数字频率计从VHDL代码到FPGA硬件实现过程中的关键误区与解决方案。重点分析了闸门时间生成的精度与资源平衡、控制时序设计中的竞争冒险规避,以及如何利用EDA工具进行综合、时序约束与调试,确保设计稳定可靠。文章为开发者提供了从仿真成功到硬件可用的实战避坑指南。

spark7igniter的博客 213

Java中Calendar类用法详解

Java 中的 Calendar 类是一个抽象类,它提供了一组方法用于操作日期和时间。

m0_74000148的博客 5095

win10系统下使用Mask_Rcnn训练自己的数据

版权所有,翻版必究。https://mp.youkuaiyun.com/console/editor/html/106094147 运行环境:WIN10,pycharm,相应的CUDA,CUDNN,tensorflow1.15.0,tensorflow-gpu-1.14.0,Anaconda3 第一步:Mask RCNN开源项目:https://github.com/matterport/Mask_RCNN 第一步:数据准备 首先安装labelme进行数据的标注。安装方法pip install labe

fightingxyz的博客 1750

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 338

Calendar 详解

Calendar详解CalendarCalendar 和 Date 的转换Calendar中的time与fieldCalendar中的两种解析模式 参考https://www.jianshu.com/p/9742bb685d72,为了方便自己查看,自己用idea敲了一遍。 Calendar Calendar 和 Date 的转换 @Test public void test(){ // D...

renguiriyue的博客 628

ORB-SLAM3在windows11下的编译使用

近期在学习SLAM,想部署一下ORB-SLAM3,但是自己电脑是win11系统,因此就想着在win11上部署一下。但是网上看了一些教程,有一些博客,但是可能不适合我这种情况把,就很纠结。先说下结果,配置成功,过程极其痛苦。

weixin_44457768的博客 6096

Calendar详细解释

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33980459的博客 439

淘宝抓包,直达函数内部request请求体和response响应体, 告别FD, Charles,SSL,justtrustme 等http代理,证书工具。

淘宝抓包,hook发包函数,直接获取response相应数据

binary66的博客 4470

CubeMX配置ADC+DMA避坑实战:如何避免采样过快导致的系统崩溃

本文针对STM32开发中常见的ADC采样过快导致程序卡死问题,提供了基于CubeMX的实战避坑指南。通过分析ADC与DMA协作机制,详解时钟配置、采样时间、DMA缓冲区长度及中断设置等关键步骤,帮助开发者从源头规避系统崩溃风险,实现稳定可靠的数据采集。

weixin_28273593的博客 324

JAVA Calendar详解

(在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读)究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢?比如有:月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28天每周的第一天 - 阳(公)历星期日是第一天;阴(农)历,星期一是第一天实际上,在历史上有

1万+

【Bug已解决】Codex 报错 MCP client for context7 failed to start: program not found 解决方案

方案适用场景推荐指数改用绝对路径Windows 上最常见、最有效的解决方式⭐⭐⭐⭐⭐提前全局安装避免依赖 npx减少运行时网络下载的不确定性⭐⭐⭐⭐使用 .cmd 后缀Windows 平台快速尝试⭐⭐⭐⭐开启调试日志需要更精确定位失败原因⭐⭐⭐⭐统一封装启动脚本需要跨平台兼容多个 MCP 服务⭐⭐⭐报错的本质是Codex 启动 MCP 子进程时,无法正确定位配置文件中写的简写命令名对应的可执行文件,尤其容易发生在 Windows 平台上使用npx这类简写命令的场景。

一键难忘的博客 5814

Java中Calendar的使用方法详解

不废话直接上代码package cn.outofmemory.codes.Date;        import java.util.Calendar;    import java.util.Date;        public class CalendarDemo {      public static void main(String[] args) {         Calendar

无名 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java calendar field_Java Calendar详解

一:字段和方法的信息YEAR 字段:public static final int YEAR ;指示年的 get 和 set 的字段数字。这是一个特定于日历的值;get 方法:public int get(int field) ;返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,...

weixin_26968079的博客 1173

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java Calendar超详解

网上看到的一篇,码一下。侵删 一:字段和方法的信息 YEAR 字段: public static final int YEAR ; 指示年的 get 和 set 的字段数字。这是一个特定于日历的值; get 方法: public int get(int field) ; 返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常。标准化和验证都是通过 complete() 方法

netjic的博客 482

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Calendar类详解

Calendar类 API详解

afunyusong的专栏 381

java calendar 天_Java Calendar详解

一、Calendar类 简介在java中时间类主要有Date、Calendar,Java官方推荐使用Calendar来替换Date的使用,Calendar与Date之间可以自由的进行转换,转换的纽带是time。java.util.Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字...

weixin_32687311的博客 1275

Calendar类的详解

Calendar类,是一个抽象类,在java.util包中,实现了Serializable,Cloneable,和Comparable三个接口,功能是为了实现日期的设置与显示。 1、如何得到Calendar类: static Calendar getInstance() Gets a calendar using the default time zone and

准提童子的专栏 1022

Java Calendar类详解

原文这里。[java] view plain copy print?究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢?    比如有:  月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28天  每周的第一天 - 阳(公)历星期日是第一天;阴(农)历,星期一是第一天    实际

auly2017的博客 1962

Java Calendar详解

Java Calendar详解

pbyang_love的博客 213

JAVA Calendar方法详解

hakunamatata2008的专栏 794
上一篇: java日志组件(4):logback
下一篇: Date、String和TimeStamp
nowseeme
博客等级 码龄10年 11粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值