我正在尝试获得以下输出:
这是我的代码:
const start = "12/7/2018";
const end = "10/6/2019";
var startLease = moment(start, "MM/DD/YYYY");
var endLease = moment(end, "MM/DD/YYYY");
var array = [];
var i = 0;
var nextEnd;
while (1 == 1) {
var nextStart = nextEnd ? (nextEnd.date() > 28 ? nextEnd : nextEnd) : nextEnd || startLease.clone().add(i, 'M');
nextEnd = startLease.clone().add(i + 1, 'M') > endLease ? endLease : startLease.clone().add(i + 1, 'M');
if (nextEnd.date() > 28) {
nextEnd.subtract(1, 'days')
} else {}
array.push(nextEnd.diff(nextStart, 'days'));
if (nextEnd >= endLease) {
break;
} else {}
i += 1
}
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
问题:
它不是从每月的7th-6th
开始,而是从每月的7th-7th
开始。我尝试了.subtract(1,'days'),但是没有输出正确的值。但是,这在本月末有效。
感谢您的帮助。谢谢。
答案 0 :(得分:0)
我在循环中添加了一些日志记录,并在一次迭代后将其切断。
对于您的示例,只有第一个月是错误的,因此,您的期望是,如果在2018年12月7日之前增加1个月,您将获得2019年1月6日的收入(实际上您将获得2019年1月7日的收入)
我不确定导致减去一天的情况应该做什么。 nextEnd.date()将解析为该月的一天,对于您的示例,该日期始终小于28。
const start = "12/7/2018";
const end = "10/6/2019";
var startLease = moment(start, "MM/DD/YYYY");
var endLease = moment(end, "MM/DD/YYYY");
var array = [];
var i = 0;
var nextEnd;
while (1 == 1) {
var nextStart = nextEnd ? (nextEnd.date() > 28 ? nextEnd : nextEnd) : nextEnd || startLease.clone().add(i, 'M');
console.log(nextStart);
nextEnd = startLease.clone().add(i + 1, 'M') > endLease ? endLease : startLease.clone().add(i + 1, 'M');
console.log(nextEnd);
if (nextEnd.date() > 28) {
nextEnd.subtract(1, 'days')
} else {}
array.push(nextEnd.diff(nextStart, 'days'));
if (nextEnd >= endLease) {
break;
} else {}
i += 1;
break;
}
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
答案 1 :(得分:0)
这对我有用:
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class page339_4 extends JFrame {
int randomNumber = new Random().nextInt(100) + 1; // New game initiator
public page339_4(){
setTitle("Number Guesser");
setSize(400, 200);
setLayout(new BorderLayout(1,0));
JPanel panel1 = new JPanel();
JLabel label = new JLabel("Guess a number here :");
JTextField field1 = new JTextField(10);
panel1.add(label);
panel1.add(field1);
JPanel panel2 = new JPanel();
JTextField field2 = new JTextField();
field2.addActionListener(f2->{
String playerGuess = field1.getText();
int guess = Integer.parseInt(playerGuess);
if (guess > randomNumber) {field2.setText("Too big!"); field2.setBackground(Color.CYAN);}
else if (guess < randomNumber) {field2.setText("Too low!"); field2.setBackground(Color.RED);}
else {field2.setText("Congratulations! Right Number!"); field2.setBackground(Color.GREEN);}
});
panel2.add(field2);
JPanel panel3 = new JPanel();
JButton btnNewGame = new JButton("New Game");
btnNewGame.addActionListener(e->{
int randomNumber = new Random().nextInt(100) + 1;
field2.setText("");
});
panel3.add(btnNewGame);
JButton btnExit = new JButton("Close");
btnExit.addActionListener(e->{
System.exit(0);
});
panel3.add(btnExit);
add(panel1, BorderLayout.NORTH);
add(panel2, BorderLayout.CENTER);
add(panel3, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
setVisible(true);
}