当前位置: 首页 > 知识库问答 >
问题:

试图写一个空手道DSL逻辑,其中,我需要一个日期在yyyy-mm-dd格式。如果日期是星期六,则应将2天添加到当前日期[关闭]

岑鸣
2023-03-14

试图写一个空手道DSL逻辑,其中,我需要一个日期在yyyy-mm-dd格式。如果日期是星期六,则应将2天添加到当前日期,如果日期是星期日,则添加1天。这是一个我正在尝试的东西,但它不起作用。

    * def logic =
      """
      function() {
  var date =  function() {
  var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
  var sdf = new SimpleDateFormat('yyyy-MM-dd');
  return sdf.format(new java.util.Date());
  }
  var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
  var sdf = new SimpleDateFormat('EEEE');
  var day =  sdf.format(new java.util.Date());
  var c = Java.type('java.util.Calendar');
  if (day== 'Saturday')
  return Calendar.add(date(),2);

  }
  """

共有1个答案

车嘉实
2023-03-14

遗留的日期-时间API(java.util日期-时间类型及其格式API,SimpleDateFormat)已经过时并且容易出错。建议完全停止使用它,并切换到java.time,即现代的日期时间API*

使用现代API的解决方案:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.TextStyle;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        // Current date
        // Change the JVM's default ZoneId as applicable e.g. ZoneId.of("Asia/Kolkata")
        LocalDate date = LocalDate.now(ZoneId.systemDefault());

        if (date.getDayOfWeek() == DayOfWeek.SATURDAY)
            date = date.plusDays(2);
        else if (date.getDayOfWeek() == DayOfWeek.SUNDAY)
            date = date.plusDays(1);

        System.out.println(date);

        // Print day name
        System.out.println(date.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH));
    }
}

输出:

2021-05-10
Monday

*无论出于什么原因,如果您必须坚持Java6或Java7,您都可以使用ThreeTen-Backport,它将大部分Java.time功能后端到Java6和7。如果您正在为一个Android项目工作,并且您的Android API级别仍然不符合Java-8,那么通过desugaring检查Java8+API可用,以及如何在Android项目中使用ThreeTenABP。

 类似资料:
  • 这将产生。但我需要的是。我的目的是使用Hibernate标准将此日期与数据库中的另一个日期进行比较。所以我需要格式的date对象。

  • 我有一个格式为。我希望它的格式为 下面是我尝试进行此转换的示例util: 但是,我得到的输出不是格式。 请告诉我如何将从格式化为

  • 我正在进行JavaScript验证,验证文本框的日期是否等于当前日期。 如果大于或等于今天的日期,则显示错误消息。 注意:在我的中,我已将日期转换为格式。所以我需要检查date与格式的当前日期。这是我的代码: 我需要使用日期的格式来检查我的文本框中的日期,因此我今天的值只能使用日期的格式。

  • 问题内容: 如何检查SQL Server中日期字符串是否为MM / DD / YYYY格式? 问题答案: 如果结果为1,则为有效日期,但不能保证其为用户指定的日期。如果他们输入: 没有办法知道是6月7日还是7月6日。最好的办法是让用户从下拉列表或日历控件中选择日期,这使您可以控制格式并避免不必要的解释。您的应用程序层可以使用强类型变量/参数,然后插入正确类型的列中。

  • 问题内容: 我正在尝试从转换日期。我已经使用了mktime()函数和其他函数,但是我似乎无法使其工作。我已经成功地将原始日期用作定界符,但更改格式并将其与交换时没有成功。 任何帮助将不胜感激。 问题答案: 通过查看各个组成部分之间的分隔符,可以消除或格式中的日期的歧义:如果该分隔符是斜杠(),则假定为American ;否则,为0。反之,如果分隔符是破折号()或点(),则采用欧洲格式。 使用默认的