我目前正在使用当前的习惯用法创建UTC DateTime对象
DateTime now = new DateTime(DateTimeZone.UTC);
Run Code Online (Sandbox Code Playgroud)
有没有办法默认所以我可以使用默认构造函数创建基于UTC的DateTime对象,所以它更隐含?
DateTime now = new DateTime();
Run Code Online (Sandbox Code Playgroud) 我从数据库获取UTC时间戳,我正在设置为JodaTime DateTime实例
DateTime dt = new DateTime(timestamp.getTime());
Run Code Online (Sandbox Code Playgroud)
它存储时间完美,10:00 AM但与当地时区.例如,我在IST时区,距离UTC +5:30
我已经尝试了很多改变时区的东西,但是10:00 AM通过使用+5:30的不同,它可以将时间从其他东西改变为其他东西
有什么办法可以在不影响当前时间的情况下更改TimeZone
编辑:如果我现在的时间是:
2013-09-25 11:27:34 AM UTC
Run Code Online (Sandbox Code Playgroud)
以下是我使用它时的结果 new DateTime(timestamp.getTime());
2013-09-25 11:27:34 AM Asia/Kolkata
Run Code Online (Sandbox Code Playgroud)
以下是我使用时的结果new DateTime(timestamp.getTime(), DateTimeZone.UTC);
2013-09-25 05:57:34 AM UTC
Run Code Online (Sandbox Code Playgroud) 这段代码始终将日期解析为当前时区,而不是解析为正在解析的字符串中的时区.
final DateTimeFormatter df = DateTimeFormat
.forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
.parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)
它输出:
dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)
而我期望:
dateTime = 2009-08-24T04:36:46.000+10:00
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
我想在执行更多计算之前简单地将TimeZone信息添加回LocalDate.LocalDate来自使用ObjectLab LocalDateCalculator为现有DateTime添加天数,但该方法需要返回一个修改后的ReadableInstant以形成一个Interval,然后我可以检查它.
我正在尝试的代码相当于将Joda LocalDate转换为Joda DateTime:
LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate();
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone);
Run Code Online (Sandbox Code Playgroud)
我得到的错误来自Joda的转换系统:
java.lang.IllegalArgumentException: No instant converter found for type: org.joda.time.LocalDate
at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:147)
at org.joda.time.DateTime.<init>(DateTime.java:192)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个解决此问题的方法,或者一种解决方法,可以获得具有完整时区信息的准确间隔.
我的应用程序托管在伦敦服务器中.我在西班牙马德里.所以时区是-2小时.
如何获取我的时区的当前日期/时间.
Date curr_date = new Date(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
例如
Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));
Run Code Online (Sandbox Code Playgroud)
DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");
DateTime dt = new DateTime(zone);
int day = dt.getDayOfMonth();
int year = dt.getYear();
int month = dt.getMonthOfYear();
int hours = dt.getHourOfDay();
int minutes = dt.getMinuteOfHour();
Run Code Online (Sandbox Code Playgroud) 使用AWS SDK for Java和Java 1.8u60 +时出现以下异常.
com.amazonaws.services.s3.model.AmazonS3Exception: AWS authentication requires a valid Date or x-amz-date header (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 41C359C079CBAFCF)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) ~[aws-java-sdk-core-1.10.10.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) ~[aws-java-sdk-core-1.10.10.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) ~[aws-java-sdk-core-1.10.10.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) ~[aws-java-sdk-core-1.10.10.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3608) ~[aws-java-sdk-s3-1.10.10.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3561) ~[aws-java-sdk-s3-1.10.10.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:647) ~[aws-java-sdk-s3-1.10.10.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:632) ~[aws-java-sdk-s3-1.10.10.jar:na]
Run Code Online (Sandbox Code Playgroud) 我有这样的代码:
// old_api(Date date)
old_api(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)
目前,我需要Calendar用Joda-Time 取代DateTime.我想知道如何java.util.Date离开Joda-Time DateTime?
我想在一周的开头和当周的结束之间创建一个间隔.
我从以下答案中借鉴了以下代码:
private LocalDateTime calcNextSunday(LocalDateTime d) {
if (d.getDayOfWeek() > DateTimeConstants.SUNDAY) {
d = d.plusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.SUNDAY);
}
private LocalDateTime calcPreviousMonday(LocalDateTime d) {
if (d.getDayOfWeek() < DateTimeConstants.MONDAY) {
d = d.minusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.MONDAY);
}
Run Code Online (Sandbox Code Playgroud)
但现在我希望周一LocalDateTime是00:00:00,周日LocalDateTime是23:59:59.我该怎么做?
如何指定格式字符串以仅从字符串转换日期.就我而言,只有日期部分是相关的
将其构造为DateTime失败:
String dateString = "2009-04-17";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dateTime = formatter.parseDateTime(dateString);
Run Code Online (Sandbox Code Playgroud)
有错误 java.lang.IllegalArgumentException: Invalid format: "2011-04-17" is too short
可能是因为我应该使用LocalDate.但是,我没有看到任何格式化程序LocalDate.转换String dateString = "2009-04-17";成最好的方法是什么LocalDate(或者如果不是正确的表示则是其他的东西)
谢谢...
我从Joda站点获取了文件,并按照这些说明添加库,但是当我进入Gradle同步时,我最终得到了错误:
Gradle Sync
Error:Configuration with name 'default' not found.
Run Code Online (Sandbox Code Playgroud)
Gradle Build
Error:A problem occurred configuring project ':app'.
> Cannot evaluate module joda : Configuration with name 'default' not found.
Run Code Online (Sandbox Code Playgroud)
有点困惑,我环顾四周,看到图书馆应该拥有自己的gradle文件,但joda包没有.当我尝试使用import org.joda.time;它无法解决joda.有没有人知道我做错了什么?