小编Mr.*_*irl的帖子

以毫秒为单位的日期与其日历表示之间的差异

我有两个函数将日期字符串转换为以毫秒为单位的日期:

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 .

java timestamp calendar

0
推荐指数
1
解决办法
94
查看次数

日期差异大于预期

我正在学习在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)

javascript datetime

0
推荐指数
1
解决办法
28
查看次数

x的递归方法为y的幂

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)

但无法弄清楚,我尝试过其他变化.

java recursion

0
推荐指数
1
解决办法
1445
查看次数

Javascript - getElementById()即使元素存在也返回null

我正在尝试使用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)

html javascript css

0
推荐指数
1
解决办法
609
查看次数

具有AM/PM到期日的字符串

我无法将带有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"

任何帮助深表感谢.

java

0
推荐指数
1
解决办法
449
查看次数

Chart.js 只是最后一点

我只想展示最后一点。有人可以帮忙吗?

预期的

预期的

实际的

实际的

javascript charts chart.js

0
推荐指数
1
解决办法
3900
查看次数

不使用if-else返回基于整数的图像名称

如何返回基于整数的图像名称?我有一个主意,但它使用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函数更大,并且还会有很多重复,因此似乎不起作用。

有什么建议吗?

javascript

0
推荐指数
1
解决办法
50
查看次数

使用 forEach 获取异步匿名函数的所有结果

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 内部写入。我不能改变乘法。

javascript node.js async-await typescript ecmascript-6

0
推荐指数
1
解决办法
198
查看次数

查找数组中唯一的数字

有人可以向我解释一下这行代码到底在做什么吗?

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)

但是,这不起作用,因为它返回的是通用号码。

谢谢

javascript

0
推荐指数
1
解决办法
2543
查看次数

为什么 java8 中具有时区行为的 Instant.parse() 字符串与 java 17 不同

下面的代码片段

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 实现中,行为是否已经改变?

java timezone-offset java-8 java-time java-17

0
推荐指数
1
解决办法
145
查看次数