相关疑难解决方法(0)

Java Date时区打印不同年份的不同时区,需要解决方法

在测试我的应用程序时,我遇到了一个奇怪的问题 当我在1945年之前输入一个日期时,它会改变时区.

我有这个简单的程序来显示问题.

public static void main(String[] args) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
    Calendar calendar = Calendar.getInstance();

    System.out.println("**********Before 1945");
    calendar.set(1943, Calendar.APRIL, 12, 5, 34, 12);
    System.out.println(format.format(calendar.getTime()));
    System.out.println(calendar.getTime());

    System.out.println("**********After 1945");
    calendar.set(1946, Calendar.APRIL, 12, 5, 34, 12);
    System.out.println(format.format(calendar.getTime()));
    System.out.println(calendar.getTime());
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出如下: -

**********Before 1945
1943-04-12 05:34:12+0630
Mon Apr 12 05:34:12 IDT 1943

**********After 1945
1946-04-12 05:34:12+0530
Fri Apr 12 05:34:12 IST 1946
Run Code Online (Sandbox Code Playgroud)

对于第一个,我得到它+0630IDT,而第二个,我正在+0530IST预计.

编辑:-

在看了@Elliott Frisch之后,我在1942年之前尝试了一个日期: -

calendar.set(1915, Calendar.APRIL, 12, 5, 34, …
Run Code Online (Sandbox Code Playgroud)

javascript java timezone calendar date

18
推荐指数
3
解决办法
528
查看次数

如何在Java 8(Scala)中将日期时间字符串转换为long(UNIX纪元时间)

我想要一些字符串的UNIX纪元时间(Posix Time,Unix Time)pattern,字符串是正常格式(所以UTC).请使用Java 8,而不是Joda或旧Java.

到目前为止,我有以下内容,但我讨厌这个原因有很多:

  1. 对于与日期最常见的事情(转换为UNIX纪元时间)来说,这太冗长了.7方法调用应该是1.
  2. 它必须指定UTC,但是UTC只是默认值,为什么我必须在这里明确?
  3. 它有一个字符串文字 "UTC"
  4. 它有一个神奇的数字 ZoneOffset.ofHours(0)

我到目前为止最好的:

def dateTimeStringToEpoch(s: String, pattern: String): Long = 
    LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
      .atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(0)))
      .toInstant().getEpochSeconds
Run Code Online (Sandbox Code Playgroud)

另外,奖金问题,是否有效?创建过DateTimeFormatter孔是否有任何开销DateTimeFormatter.ofPattern(pattern)?如果是这样的话?

java datetime scala epoch java-8

6
推荐指数
1
解决办法
489
查看次数

在Java中将日期字符串转换为Epoch

有没有办法在Java中将给定的DateString转换为Milliseconds(Epoch长格式)?示例:我想转换

public static final String date = "04/28/2016"; 
Run Code Online (Sandbox Code Playgroud)

到毫秒(epoch).

java epoch apache-commons-dateutils

5
推荐指数
3
解决办法
4万
查看次数

Java - SimpleDateFormat 格式化程序以毫秒为单位返回纪元时间

我对 Java 和一般编码非常陌生 - 我有一些代码以以下格式返回时间戳,如下yyyy.MM.dd HH:mm:ss:ms所示:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss:sss");
Run Code Online (Sandbox Code Playgroud)

这将返回:

2017.07.19 11:42:30:423
Run Code Online (Sandbox Code Playgroud)

有没有办法编辑上面的“SimpleDateFormat 格式化程序”代码以将日期/时间作为包含毫秒的纪元时间戳返回,以便返回的值按照以下格式进行格式化?

1500464550423
Run Code Online (Sandbox Code Playgroud)

我希望我可以修改代码的("yyyy.MM.dd HH:mm:ss:sss")一部分SimpleDateFormat formatter来做到这一点。

非常感谢任何帮助或建议。

谢谢

java datetime timestamp date epoch

4
推荐指数
1
解决办法
2万
查看次数

java.text.ParseException:无法解析的日期:java.text.DateFormat.parse(DateFormat.java:579)

我有问题SimpleDateFormat

SimpleDateFormat dtfmt=new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.getDefault());
Date dt=dtfmt.parse(deptdt);
Run Code Online (Sandbox Code Playgroud)

在 Android 模拟器中工作正常,但在手机中出现此错误:

W/System.err: java.text.ParseException: Unparseable date: "24 Oct 2016 7:31 pm" (at offset 3) W/System.err: at java.text.DateFormat.parse(DateFormat.java:579)

有什么解决办法吗?

java android date datetime-parsing unparseable

2
推荐指数
1
解决办法
1211
查看次数

如何将YYYYMMDDHHMMSS格式的日期转换为纪元或unix时间?

编辑:我已经编辑了我的问题以包含更多信息,我已经尝试了很多方法来做到这一点,在StackOverflow上问一个问题通常是我的最后一招.任何帮助是极大的赞赏.

我有一个YYYYMMDDHHMMSS格式的日期(它是一个Timestamp对象)(例如20140430193247).这是从我的服务发送到前端,使用AngularJS格式显示它:date:'dd/MM/yyyy'.

如何将其转换为Epoch/Unix时间?

我已经尝试了与此相关的重复问题,我得到的是另一个日期.

我也尝试过以下方法:

A:

//_time == 20140430193247
return _time.getTime()/1000; // returns 20140430193 - INCORRECT
Run Code Online (Sandbox Code Playgroud)

B:

return _time.getTime(); // returns 20140430193247 (Frontend: 23/03/2608) - INCORRECT
Run Code Online (Sandbox Code Playgroud)

C:

Date date = new Date();
//_time = 20140501143245 (i.e. 05/01/2014 14:32:45)
String str = _time.toString();
System.out.println("Time string is " + str);
//Prints: Time string is 2608-03-24 15:39:03.245 meaning _time.toString() cannot be used
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
        date = df.parse(str);
} catch (ParseException e) {
}

return date; // returns …
Run Code Online (Sandbox Code Playgroud)

java date

-1
推荐指数
1
解决办法
6万
查看次数