尝试在空手道 DSL 中编写逻辑,我需要一个 yyyy-mm-dd 格式的日期。如果一天是星期六,那么应该将 2 天添加到当前日期
Trying to write a logic in Karate DSL where, I need a date in yyyy-mm-dd format. If day is Saturday then 2 day should get added to the current date
尝试用空手道 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);
}
"""
旧版日期时间 API(java.util
日期时间类型及其格式 API、SimpleDateFormat
)已过时且容易出错。建议完全停止使用,改用java.time
,modern date-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
从 Trail: Date Time[=37= 中了解有关 modern date-time API* 的更多信息].
* 无论出于何种原因,如果您必须坚持Java 6 或Java 7,您可以使用ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and 。
尝试用空手道 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);
}
"""
旧版日期时间 API(java.util
日期时间类型及其格式 API、SimpleDateFormat
)已过时且容易出错。建议完全停止使用,改用java.time
,modern date-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
从 Trail: Date Time[=37= 中了解有关 modern date-time API* 的更多信息].
* 无论出于何种原因,如果您必须坚持Java 6 或Java 7,您可以使用ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and