相关疑难解决方法(0)

如何在 CEST 和 UTC 时区之间转换日期时间对象

我不想使用该pytz库,因为我正在处理的项目需要文书工作来引入依赖项。如果我可以在没有第三方库的情况下实现这一点,我会更开心。

当日期处于夏令时时,我无法在 CET 和 UTC 之间转换日期。这与我期望的不同一个小时:

>>> print from_cet_to_utc(year=2017, month=7, day=24, hour=10, minute=30)
2017-07-24T09:30Z

2017-07-24T08:30Z  # expected
Run Code Online (Sandbox Code Playgroud)

CET 比 UTC 早 1 小时,夏季比 UTC 早 2 小时。因此,我预计仲夏的中欧 10:30 实际上是 UTC 时间 8:30。

功能是:

from datetime import datetime, tzinfo, timedelta

def from_cet_to_utc(year, month, day, hour, minute):
    cet = datetime(year, month, day, hour, minute, tzinfo=CET())
    utc = cet.astimezone(tz=UTC())
    return '{:%Y-%m-%d:T%H:%MZ}'.format(utc)
Run Code Online (Sandbox Code Playgroud)

我使用两个时区信息对象:

class CET(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=1)

    def dst(self, dt):
        return timedelta(hours=2)

class UTC(tzinfo):
    def utcoffset(self, dt):
        return timedelta(0) …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime dst

5
推荐指数
1
解决办法
8296
查看次数

处理java/android和夏令时中的日期/时间

我正在为Android制作日记应用程序,我想让用户选择他们所在的时区.时间一直是我编程的混乱区域.

我将为可用的时区创建一个枚举.

我将以longUTC格式将日期/时间条目保存到sqlite ,然后以Java编程方式处理偏移量和DST以用于显示目的.

我实际上意识到Java在日期/时间处理方面的局限性.

Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("UTC")); //returns the current time in UTC format
Long utcLong = utc.getTimeInMillis(); //returns current utc time in long for database insertion
Run Code Online (Sandbox Code Playgroud)

问题1:我如何应用偏移量并说明何时应用任何额外的DST偏移量?因为并非所有时区都观察到DST,并且DST在不同时区对不同时区生效.

问题2:Java的TimeZone类有大约800个ID,用户必须滚动~800个选项才能找到适用于它们的选项.有短名单吗?我在想大约有50个有用的时区.

java datetime android date

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

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万
查看次数

C#与Java中的DateTime操作

我是Java的新手.我有时间从网页上获取,这是"hh:mm"格式(不是24小时).这对我来说是一个字符串.然后我想将这个字符串与今天的日期结合起来,以便创建一个Date我可以使用的Java .

在C#中:

string s = "5:45 PM";
DateTime d;
DateTime.TryParse(s, out d);
Run Code Online (Sandbox Code Playgroud)

在Java中我尝试过:

String s = "5:45 PM";
Date d = new Date(); // Which instantiates with the current date/time.

String[] arr = s.split(" ");
boolean isPm = arr[1].compareToIgnoreCase("PM") == 0;

arr = arr[0].split(":");
int hours = Integer.parseInt(arr[0]);
d.setHours(isPm ? hours + 12 : hours);
d.setMinutes(Integer.parseInt(arr[1]));
d.setSeconds(0);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现我想要的?

c# java datetime date-parsing

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

如何将时间戳字符串转换为纪元时间?

我的格式有时间戳2017-18-08 11:45:30.345.
我想将它转换为纪元时间,所以我在下面做:

String timeDateStr = "2017-18-08 11:45:30.345"; 
DateTimeFormatter dtf  = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss.SSS");
ZonedDateTime     zdt  = ZonedDateTime.parse(timeDateStr, dtf);        
System.out.println(zdt.toInstant().toEpochMilli());
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

java.time.format.DateTimeParseException:无法解析文本'2017-18-08 11:45:30.345':无法从TemporalAccessor获取ZonedDateTime

我也尝试过不同的格式,但仍然会出错.

java timestamp epoch datetime-parsing java-time

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

使用Java 8 DateTimeFormatter和西班牙语月份名称进行解析

使用'old',Java 8之前SimpleDateFormat我可以做到:

new java.text.SimpleDateFormat("MMM yyyy", new java.util.Locale("es", "ES")).parse("Mayo 2017")
Run Code Online (Sandbox Code Playgroud)

获取Date具有西班牙月份名称的日期对象.

如何使用Java 8实现相同的功能DateTimeFormatter

我试过了:

DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withLocale(new Locale("es", "ES")).ofPattern("MMM yyyy").parse("Mayo 2017")
Run Code Online (Sandbox Code Playgroud)

但只得到一个java.time.format.DateTimeParseException.

java datetime date-parsing java-8 java-time

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

如何在js-joda中比较LocalDate和ZonedDateTime?

我正在寻找一种方法来比较LocalDateZonedDateTimein的实例js-joda,但这些类不兼容。我愿意接受,这LocalDateZonedDateTime时间和时区设置为零的情况。

比较这两个对象的最简单方法是什么?

javascript datetime-comparison zoneddatetime js-joda localdate

3
推荐指数
1
解决办法
6392
查看次数

尝试将PDT中的日期时间解析为ZonedDateTime表示

我该如何解析PDT时区中的日期时间值?

06/24/2017 07:00 AM (PDT)
Run Code Online (Sandbox Code Playgroud)

我想维护时区,以便我可以根据网站访问者的偏好来表示其他时区的时间.

我尝试使用,ZonedDateTime但我得到一个解析错误:

   java.time.ZonedDateTime.parse("06/24/2017 07:00 AM (PDT)")
Run Code Online (Sandbox Code Playgroud)

错误是:

java.time.format.DateTimeParseException: Text '06/24/2017 07:00 AM (PDT)' could not be parsed at index 0
   at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
   at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
   at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
   at java.time.ZonedDateTime.parse(ZonedDateTime.java:582)   ... 29 elided
Run Code Online (Sandbox Code Playgroud)

另外,你是否同意我应该使用ZonedDateTime

java timezone datetime datetime-parsing zoneddatetime

3
推荐指数
1
解决办法
753
查看次数

java.time.Clock.systemDefaultZone().getZone() 与 java.util.TimeZone.getDefault().toZoneId() 之间有什么区别?

鉴于两者java.time.Clock.systemDefaultZone().getZone()java.util.TimeZone.getDefault().toZoneId()返回相同的输出,两者之间有什么区别吗?

例如这段代码

import java.time.Clock;
import java.util.TimeZone;

public class Main {

  public static void main(String[] args) {
    System.out.println("Clock.systemDefaultZone().getZone() : " 
        + Clock.systemDefaultZone().getZone());
    System.out.println("TimeZone.getDefault().toZoneId() : " 
        + TimeZone.getDefault().toZoneId());
  }

}
Run Code Online (Sandbox Code Playgroud)

返回此输出

Clock.systemDefaultZone().getZone() : Europe/Paris
TimeZone.getDefault().toZoneId() : Europe/Paris
Run Code Online (Sandbox Code Playgroud)

java timezone java-8 java-time

3
推荐指数
1
解决办法
2212
查看次数

Momentjs calendar() 等效于 Java

Momentjs 具有calendar()漂亮的打印时间跨度的功能,如下所示。

例如:

“上周一下午 1:14”

“09/21/2017”(如果日期是前一段时间)

Java中是否有等效的功能(如果可能,Joda-Time)?

moment().subtract(10, 'days').calendar(); // 09/21/2017
moment().subtract(6, 'days').calendar();  // Last Monday at 1:14 PM
moment().subtract(3, 'days').calendar();  // Last Thursday at 1:14 PM
moment().subtract(1, 'days').calendar();  // Yesterday at 1:14 PM
moment().calendar();                      // Today at 1:14 PM
moment().add(1, 'days').calendar();       // Tomorrow at 1:14 PM
moment().add(3, 'days').calendar();       // Wednesday at 1:14 PM
moment().add(10, 'days').calendar();      // 10/11/2017
Run Code Online (Sandbox Code Playgroud)

java jodatime date-difference momentjs

3
推荐指数
1
解决办法
8606
查看次数