我有两个函数将日期字符串转换为以毫秒为单位的日期:
public static long convertYYYYMMDDtoLong(String date) throws ParseException {
SimpleDateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d = f.parse(date);
long milliseconds = d.getTime();
return milliseconds;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此函数,我会得到以下结果:
long timeStamp = convertYYYYMMDDtoLong("2014-02-17");
System.out.println(timeStamp);
Run Code Online (Sandbox Code Playgroud)
它打印:
1389909720000
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行以下代码:
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timeStamp);
System.out.println(cal.getTime());
Run Code Online (Sandbox Code Playgroud)
打印出来:
Fri Jan 17 00:02:00 IST 2014
Run Code Online (Sandbox Code Playgroud)
为什么我的约会时间转移了一个月?怎么了?
PS:我的问题是我需要将日期(表示为)映射long到另一个Calendar仅接受格式的第三方API .
我正在学习在Javascript中使用Date对象.试图计算现在和某个设定日期之间的差异,但它返回的值比想要的大得多.codepen在这里,我似乎无法想象我做错了什么......帮忙?
var setdate = new Date(2014, 4, 27, 14,30); //27th of April this year at 14:30
var now = new Date(); //Now, whenever this code runs
var diff = Math.round((setdate.getTime() - now.getTime())/1000); //Difference in seconds
function NiceTimer(delta) { //Decompose the difference in seconds into date units.
this.days = Math.floor(delta/ 86400);
delta -= this.days*86400; //Subtract the value once it has been "extracted".
this.hours = Math.floor(delta/ 3600);
delta -= this.hours*3600;
this.minutes = Math.floor(delta/ 60);
delta -= this.minutes*60;
this.seconds = delta; …Run Code Online (Sandbox Code Playgroud) 2,3得到4.会导致什么?
public static int basepowerexp(int base, int exp) {
if (exp == 0) {
return 1;
} else {
return base * basepowerexp(exp - 1, base);
}
}
public static void bpe(int base, int exp) {
System.out.println("The answer to " + base + " to the power of " + exp
+ " is " + power(base));
}
Run Code Online (Sandbox Code Playgroud)
我认为这与以下内容有关:
return base * basepowerexp(exp - 1, base);
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚,我尝试过其他变化.
我正在尝试使用getElementById()获取元素,但它返回null.
这是我在mozilla firefox调试器上遇到的错误
"TypeError:document.getElementById(...)为null".
代码有什么问题?
<html>
<head>
<title>Stack</title>
<style type="text/css">
.para1{position:absolute;top:10px;left:120px;z-index:0;border:solid;padding:80px;width:300px;background-color:aqua}
.para2{position:absolute;top:50px;left:150px;z-index:0;border:solid;padding:80px;width:300px;background-color:#ff0}
.para3{position:absolute;top:100px;left:180px;z-index:0;border:solid;padding:80px;width:300px;background-color:red}
</style>
</head>
<body>
<p class="para1" id="p1" onmouseover="toTop('p1')">Frame One</p>
<p class="para2" id="p2" onmouseover="toTop('p2')">Frame Three</p>
<p class="para3" id="p3" onmouseover="toTop('p3')">Frame Two</p>
<script type="text/javascript">
var top = 'p3';
function toTop(newTop) {
domTop = document.getElementById(top).style
domNew = document.getElementById(newTop).style
domTop.zIndex = "0"
domNew.zIndex = "10"
top = newTop
}
</script>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
我无法将带有AM/PM的字符串传递给时间戳(日期).
这是我正在尝试的一段代码.
public static Date parseDate() {
String format = "dd-MMM-yyyy HH:mm:ss a";
String sdate = "07-May-2018 12:00:00 AM";
Date util_sdate = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(false);
util_sdate = sdf.parse(sdate);
} catch (ParseException pe) {
pe.printStackTrace();
}
return util_sdate;
}
Run Code Online (Sandbox Code Playgroud)
我得到以下例外.
java.text.ParseException:无法解析的日期:"07-May-2018 12:00:00 AM"
任何帮助深表感谢.
如何返回基于整数的图像名称?我有一个主意,但它使用if和的负载else。
因此,这很重要,我需要一个函数,该函数将基于1到500之间的整数返回图像的名称。如果整数在1到30之间,则显示image1,从这一点开始,我将返回50的另一幅图像,75、100、125、150、175、200等
我想到的第一个想法是使用IF和Elses这样的:
if (number >=1 && number <= 29) {
Return image1
} else if (number >=30 && number <=49) {
Return image2
} else if... etc
Run Code Online (Sandbox Code Playgroud)
但是此功能将变得非常庞大,因为我将拥有大约20个If Else,以便覆盖所有可能的结果,直到500。
另一个选项是使用key:值对创建一个JSON对象,并使用整数键获取图像,如下所示:
returnImage(int) {
let images = {
30: 'image1',
50: 'image2',
75: 'image3'
}
return images[int]
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,例如,整数为37时,我不确定如何使它起作用。我显然可以将所有整数都列为键,但是该函数将比if else函数更大,并且还会有很多重复,因此似乎不起作用。
有什么建议吗?
async function multiply(task) {
return task * 2
}
var arr = [1, 2, 3, 4];
var res = [];
arr.forEach(async task => {
res.push(await multiply(task))
});
console.log(res)
Run Code Online (Sandbox Code Playgroud)
[]
Run Code Online (Sandbox Code Playgroud)
[2,4,6,8]
Run Code Online (Sandbox Code Playgroud)
我想等到所有项目都乘以 2,然后将结果作为数组得到。
注意: multiply是一个异步函数,因此必须async task 在 forEach 内部写入。我不能改变乘法。
有人可以向我解释一下这行代码到底在做什么吗?
function findUniq(array) {
return array.find((item) => array.indexOf(item) === array.lastIndexOf(item))
}
Run Code Online (Sandbox Code Playgroud)
我想知道这条线到底在做什么:
return array.find((item) => array.indexOf(item) === array.lastIndexOf(item))
Run Code Online (Sandbox Code Playgroud)
我认为这里发生的是,对于数组中的每个项目,它都会将该项目的第一个索引与项目的最后一个索引进行比较。它返回彼此相等的项目。
我不明白它如何返回唯一的数组。
如果我要写这个函数,它会是这样的:
return array.find((item) => array.indexOf(item) != array.lastIndexOf(item))
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为它返回的是通用号码。
谢谢
下面的代码片段
Instant.parse("2023-08-08T00:00:00+02:00")
Run Code Online (Sandbox Code Playgroud)
按照 java-17 中的预期进行编译和执行。但是用java-8执行时,抛出以下异常
java.time.format.DateTimeParseException: Text '2023-08-01T00:00:00+02:00' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.Instant.parse(Instant.java:395)
...
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么?java.time api 有什么变化吗?
请注意,我确实知道解决此问题的方法,以下代码适用于 java-8
OffsetDateTime.parse("2023-08-01T00:00:00+02:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME).toInstant()
Run Code Online (Sandbox Code Playgroud)
它产生了期望的结果。我有兴趣知道在 java-time api 实现中,行为是否已经改变?
javascript ×6
java ×4
async-await ×1
calendar ×1
chart.js ×1
charts ×1
css ×1
datetime ×1
ecmascript-6 ×1
html ×1
java-17 ×1
java-8 ×1
java-time ×1
node.js ×1
recursion ×1
timestamp ×1
typescript ×1