我不明白为什么MutableDateTime.setDate()将时间设置为"昨天"(参见日志时间戳小时 - 它是20:28).这个时区有关系吗?我需要在格式化程序上设置一些东西吗?
我希望在使用"10/27/2010"调用setDate之后,日期将与解析日期00:00 EDT 10/27/10相同,而不是20/28 EDT 10/26/10.这是24小时前从"now".
我在这里缺少什么,或者我应该如何编辑代码以获得所需的结果?我是Joda Time的新手,想解开这个谜.
DateTimeFormatter dateFormatterJ = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTimeFormatter timestampFormatJ = DateTimeFormat.forPattern("HH:mm zzz MM/dd/yy");
MutableDateTime startDate = new MutableDateTime();
log.info("parsed date " +
timestampFormatJ.print(dateFormatterJ.parseMutableDateTime(startDateString)));
startDate.setDate((dateFormatterJ.parseMutableDateTime(startDateString)));
log.info("startDate: " + timestampFormatJ.print(startDate));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,startDateString只是"10/27/2010".
这是日志输出:
10-27 20:28:55 INFO parsed date: 00:00 EDT 10/27/10
10-27 20:28:55 INFO startDate: 20:28 EDT 10/26/10
Run Code Online (Sandbox Code Playgroud)
谢谢
DateTimeFormatter fmt = DateTimeFormat.forStyle('SS').withLocale(locale)DateTime dt = fmt.parseDateTime("11/4/03 8:14 PM");
上面的语句将正确解析字符串,并保存为DateTime(Joda Time).
现在如何表示一天的开始.以下是DateTime dt = fmt.parseDateTime("11/4/03 00:01 AM");
无法解析"11/4/03 00:01 AM":clockhourOfHalfday的值0必须在[1,12]范围内
我显然对标准感到困惑,比如一天开始时的简短表示.
谢谢.
我正在编写一个使用Joda Time 2.0 的Scala脚本.
当我尝试运行我的脚本时,我得到这样的错误:
error: value weeks is not a member of object org.joda.time.Period
case "w" => Some(Period.weeks(windowSpecNum))
Run Code Online (Sandbox Code Playgroud)
我也越来越为消息Period.minutes,Period.hours和Period.days.
这真的很奇怪,因为我使用其他Joda Time类没有问题,并且因为这个类在Scala REPL中工作正常:
scala> Period.minutes(5)
res0: org.joda.time.Period = PT5M
Run Code Online (Sandbox Code Playgroud)
我尝试了一些解决方法:
error: org.joda.time.Period does not have a constructor
case "m" => Some(new Period().withMinutes(windowSpecNum))
Run Code Online (Sandbox Code Playgroud)
和:
case "m" => Some(Minutes.minutes(windowSpecNum))
error: error while loading Minutes, Missing dependency 'class org.joda.convert.FromString', required by lib/joda-time-2.0.jar(org/joda/time/Minutes.class)
Run Code Online (Sandbox Code Playgroud)
这没有任何意义,因为joda-convert-1.2.jar在我的类路径中.
只是为了确保我没有对类型做一些愚蠢的事情(我是Scala的新手)我试过这个:val p = Period.hours(5)并得到了同样的错误.
我有一个每周统计系统,我想检查统计数据最后一次更新是否是上周.如果是的话,我想清除它.
目前,日期存储在LocalDate:
LocalDate lastUpdate;
Run Code Online (Sandbox Code Playgroud)
我已经有了这样的日常统计数据:
if(lastUpdate.isBefore(LocalDate.now())
{
clearDailyStatistics();
}
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
if(/* something here? */)
{
clearWeeklyStatistics();
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是:我如何比较LocalDate对象的周数?不需要形成周的不同"标准" - 周一到周日将被使用(如Java DayOfWeek课程已经使用的那样).
我有一个输入“+04:00”
我可以使用什么 API 来获取时区?
到目前为止,1)我研究了joda - https://www.joda.org/joda-time/apidocs/org/joda/time/DateTimeZone.html
static DateTimeZone forOffsetHoursMinutes(int hoursOffset, int minutesOffset)
Run Code Online (Sandbox Code Playgroud)
不确定这是否理想。
2)我检查了时区类。
http://docs.oracle.com/javase/6/docs/api/java/util/TimeZone.html#getTimeZone%28java.lang.String%29
getTimeZone
public static TimeZone getTimeZone(String ID)
Gets the TimeZone for the given ID.
Parameters:
ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x compatibility only and full names should be used.
Returns:
the specified TimeZone, or the …Run Code Online (Sandbox Code Playgroud) 我在看的DateTimeFormatter班,我想知道在那里就像是常数"M","EEE"和"YY"等被定义.更具体地讲,应该是这样的地方给一个代码ChronoField和TextStyle,它应该返回的DateTimeFormatter字符串片断如(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)要映射到的字符串"MMM"
有没有办法在Freemarker中轻松格式化Joda DateTime对象?例如,使用Java日期,我们可以使用?字符串和其他指令.
我知道我可以调用Date并获得Java Date,但我希望有更好的方法.
首先,我需要使用Java 7,所以我不能遗憾地使用SE8 Time,尽管我很乐意学习它!
我有一份持续时间清单如下:
List<Duration> durations;
Run Code Online (Sandbox Code Playgroud)
这些值中的大多数长约8小时,但有些值为零(故意).如何检查它们是0天,0分钟,0秒还是0毫秒?我需要检查每种方法如下,还是有更简洁的方法?
for(Duration duration : durations){
if(duration.getStandardDays() == 0 &&
duration.getStandardHours() == 0 &&
duration.getStandardSeconds() == 0){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
我问的原因是我注意到API中有不变的ZERO,我认为这与它有某种联系.我该如何与它进行比较?或者我应该?
https://www.joda.org/joda-time/apidocs/org/joda/time/Duration.html
使用下面的Joda Time的模式语法,这个输入字符串:
Sunday, January 09, 2011 6:15:00 PM
Run Code Online (Sandbox Code Playgroud)
变成这个日期时间:
2011-01-09T06:15:00.000Z
Run Code Online (Sandbox Code Playgroud)
码:
String start = "Sunday, January 09, 2011 6:15:00 PM";
DateTimeFormatter parser1 =
DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa");
DateTime startTime = parser1.parseDateTime(start);
Run Code Online (Sandbox Code Playgroud)
这种格式模式不正确吗?如果不是,有什么T和Z日期时间输出里面在做什么?
2011-01-09T06:15:00.000Z
Run Code Online (Sandbox Code Playgroud)