获取指定指定时间是今年的第几个星期(日期可调)

//此为获取时间戳指定时间是一年的第几周   Calender
public class DateUtils {


  public static Integer getWeekOfYear(Date date) {
      Calendar calendar = Calendar.getInstance();
      calendar.setFirstDayOfWeek(Calendar.MONDAY);
      calendar.setTime(date);
      int week = calendar.get(Calendar.WEEK_OF_YEAR);
      int mouth = calendar.get(Calendar.MONTH);
      // JDK think 2015-12-31 as 2016 1th week
      //如果月份是12月,且求出来的周数是第一周,说明该日期实质上是这一年的第53周,也是下一年的第一周
      if (mouth >= 11 && week <= 1) {
          week += 52;
      }
      return week;
  }

    public static Integer getYearOfDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }

    public static Integer weeksBetween(Date fromDate, Date toDate) {
        if (fromDate.before(toDate)) {
            Date temp = fromDate;
            fromDate = toDate;
            toDate = temp;
        }
        Integer weekNum = (getWeekOfYear(fromDate) - getWeekOfYear(toDate))
                + (getYearOfDate(fromDate) - getYearOfDate(toDate)) * 52;
        return ++weekNum;
    }

    public static void main(String[] args) {
         //此为获取   2021年1月10是2021年的第几周
        String formDateString = "2021-01-1 ";
        String toDateString = "2021-01-10 ";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
        try {
            Date formDate = sdf.parse(formDateString);
            Date toDate = sdf.parse(toDateString);
            System.out.println(weeksBetween(formDate, toDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 代码:int PWM_freq = 1000; // 设置PWM频率为1000Hz int PWM_duty = 50; // 设置占空比为50% int pulse_num = 10; // 设置脉冲数量 void setup() { pinMode(9, OUTPUT); // 将引脚9设置为输出 digitalWrite(9, LOW); // 将引脚9设置为低电平 // 使用analogWrite()函数来设置PWM频率和占空比 analogWrite(9, PWM_freq, PWM_duty); for(int i=0; i<pulse_num; i++){ digitalWrite(9, HIGH); // 将引脚9设置为高电平 delay(50); // 延时50毫秒 digitalWrite(9, LOW); // 将引脚9设置为低电平 delay(50); // 延时50毫秒 } } void loop() { // 空循环 } ### 回答2: PWM(脉冲宽度调制)是一种常见的模拟信号产生技术,通过控制信号的高电平时间来实现模拟输出。要实现频率可调指定脉冲数量的代码,可以使用单片机或微控制器来编程。 首先,我们需要定义一个计数器来计算脉冲的数量。我们可以使用一个变量例如"count"来保存计数值,初始值设置为0。然后,我们需要设置一个变量"targetCount"来保存目标脉冲数量。 接下来,我们需要配置PWM的基本参数,例如占空比和频率。选择一个合适的引脚作为PWM输出,配置相应的IO口为输出模式。 然后,我们可以设置一个定时器来控制PWM的频率。通过计算定时器的期和占空比,我们可以设置PWM的频率和脉冲宽度。 接下来,我们进入主循环。在每个循环中,我们先判断计数器的值是否等于目标脉冲数量,如果等于则停止输出PWM信号。如果不等于,则继续生成PWM脉冲。 在生成PWM脉冲的代码中,我们可以使用循环来控制每个脉冲的时间,例如通过延时函数或者定时器来控制每个脉冲的持续时间。每次生成完一个脉冲后,我们需要将计数器的值加1,并判断是否达到目标脉冲数量。 最后,我们可以在主函数中调用以上代码,并适当延时等待输出完指定数量的脉冲。代码如下: ```C #include <Arduino.h> int count = 0; int targetCount = 10; void setup() { pinMode(PWM_PIN, OUTPUT); // 设置PWM频率和占空比 } void loop() { if (count < targetCount) { // 生成PWM脉冲 // 延时或使用定时器控制脉冲的持续时间 count++; if (count == targetCount) { // 停止输出PWM信号 } } } ``` 上述代码是一个简单的示例,可以根据实际需求进行修改和扩展。通过适合的硬件和软件配置,可以实现频率可调指定脉冲数量的PWM代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值