我在浏览joda 网站的时区页面时发现了这个
-05:00 EST
-05:00 EST5EDT
-05:00 Etc/GMT+5
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是什么EST5EDT意思,我通常使用EST所以只是想知道它。
在发布问题之前我已经搜索过并没有发现任何内容。
对于特定的月份和年份,我想使用 Java 中的 Joda 时间库获取 ISO 年的月份开始日期和结束日期。例如,我的月份为 3 月,年份为 2014 年,所以我想知道 ISO 年份中的 3 月的开始日期和结束日期。
除了 joda-time 库之外,还有其他方法可以得到同样的东西吗?
这个问题只发生在 Android 5 中。应用程序在此时崩溃写入,我创建了一个新DateTime对象,例如:
mStartTime = new DateTime(DateTimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)
崩溃报告是:
java.lang.AbstractMethodError: abstract method "long boq.f()"
at org.joda.time.chrono.BasicYearDateTimeField.(BasicYearDateTimeField.java:46)
at org.joda.time.chrono.BasicChronology.assemble(BasicChronology.java:273)
at org.joda.time.chrono.GregorianChronology.assemble(GregorianChronology.java:197)
at org.joda.time.chrono.AssembledChronology.setFields(AssembledChronology.java:323)
at org.joda.time.chrono.AssembledChronology.(AssembledChronology.java:102)
at org.joda.time.chrono.BasicChronology.(BasicChronology.java:131)
at org.joda.time.chrono.BasicGJChronology.(BasicGJChronology.java:75)
at org.joda.time.chrono.GregorianChronology.(GregorianChronology.java:153)
at org.joda.time.chrono.GregorianChronology.getInstance(GregorianChronology.java:133)
at org.joda.time.chrono.GregorianChronology.getInstance(GregorianChronology.java:99)
at org.joda.time.chrono.GregorianChronology.(GregorianChronology.java:70)
at org.joda.time.chrono.GregorianChronology.getInstanceUTC(GregorianChronology.java:80)
at org.joda.time.chrono.ISOChronology.(ISOChronology.java:59)
at org.joda.time.base.BaseDateTime.(BaseDateTime.java:73)
at org.joda.time.DateTime.(DateTime.java:184)
at com.znapo.photo_sharer.asynctasks.GetAllSessionTask.onPostExecute(GetAllSessionTask.java:149)
at com.znapo.photo_sharer.asynctasks.GetAllSessionTask.onPostExecute(GetAllSessionTask.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:636)
at android.os.AsyncTask.access$500(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)
我的完整 Proguard 配置文件是:
-dontwarn org.apache.**
-dontwarn com.google.android.**
-dontskipnonpubliclibraryclassmembers
##---------------Begin: proguard …Run Code Online (Sandbox Code Playgroud) 我是 Android 新手。我有一个要求,我有一个字段可以输入一个人的出生日期。成功选择后,我想返回从出生日期到当前日期的总月数。例如,如果我输入出生日期截至2012年10月19日,我想返回36(个月)。我搜索了这个,但没有找到任何适合我的要求的东西。这是我当前返回成功数据的代码,
private void showDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0);
cal.set(year, month, day);
Date date = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
if(System.currentTimeMillis() > date.getTime()) {
edtDate.setText(sdf.format(date));
LocalDate date1 = new LocalDate(date);
LocalDate date2 = new LocalDate(new java.util.Date());
PeriodType monthDay = PeriodType.yearMonthDayTime();
Period difference = new Period(date1, date2, monthDay);
int months = difference.getMonths();
months=months + 1;
System.out.println("16102015:Nunber of Months"+months);
}else{
Toast.makeText(mActivity,getResources().getString(R.string.date_validationmsg),Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将日期时间字符串转换为10/10/2015 10:00:00自 Unix 纪元以来的秒数,即1444471200. 然而,奇怪的是我取回了1444467600实际上是10/10/2015 09:00:00. 这是我的代码:
// using "joda-time" % "joda-time" % "2.9",
// "org.joda" % "joda-convert" % "1.8.1",
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
val dt = DateTime.parse(dateTimeString, DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss"))
dt.getMillis / 1000
Run Code Online (Sandbox Code Playgroud)
这个小时偏移量来自哪里,我该如何摆脱它?我的本地时区是格林威治标准时间(无论如何目前都为 UTC)...
我有一组两个小时的范围
10 PM - 02 AM
01 AM - 08 AM
Run Code Online (Sandbox Code Playgroud)
无论日期如何,我都想检查它们中的任何一个是否重叠。
例如:第一个范围可能是 8 月 1 日和 2 日,而第二个范围可能是 8 月 10 日。
这是我到目前为止
private Interval createInterval(final OpeningClosingTimesEntry entry) {
LocalDateTime openingHour = LocalDateTime.fromDateFields(entry.getOpenTime());
LocalDateTime closingHour = LocalDateTime.fromDateFields(entry.getCloseTime());
if(closingHour.isBefore(openingHour)){
closingHour = closingHour.plusDays(1);
}
return new Interval(openingHour.toDate().getTime(), closingHour.toDate().getTime());
}
private Interval adjustSecondIntervalDay(final Interval interval1, final Interval interval2){
if(interval1.getEnd().getDayOfYear() > interval2.getStart().getDayOfYear()){
DateTime start = interval2.getStart().plusDays(1);
DateTime end = interval2.getEnd().plusDays(1);
return new Interval(start, end);
}
return interval2;
}
Run Code Online (Sandbox Code Playgroud) 我在 Scala 中有两个格式为“yyyy-MM-dd”的日期,它们都是一个月的最后一天(2015-05-31),我想找到它们之间的月份差异。我有以下代码,但要找到月差并不容易。
val format = new java.text.SimpleDateFormat("yyyy-MM-dd")
val diff = format.parse(date1).getTime - format.parse(date2).getTime
val days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)
有什么更好的建议吗?
我有一个 Joda DateTimes 的数组列表,如下所示:
List <DateTime> nextRemindersArray = new ArrayList<DateTime>();
nextRemindersArray.add(reminderOneDateTime);
nextRemindersArray.add(reminderTwoDateTime);
nextRemindersArray.add(reminderThreeDateTime);
Run Code Online (Sandbox Code Playgroud)
我正在尝试按升序对日期进行排序,但遇到了麻烦:
我用谷歌搜索并找到了这个页面:
https://cmsoftwaretech.wordpress.com/2015/07/19/sort-date-with-timezone-format-using-joda-time/
我尝试过这样的:
nextRemindersArray.sort(nextRemindersArray);
Run Code Online (Sandbox Code Playgroud)
但它给了我错误:
Error:(1496, 37) error: incompatible types: List<DateTime> cannot be converted to Comparator<? super DateTime>
Run Code Online (Sandbox Code Playgroud)
然后我尝试这样:
DateTimeComparator dateTimeComparator = DateTimeComparator.getInstance();
nextRemindersArray.sort(nextRemindersArray, dateTimeComparator);
Run Code Online (Sandbox Code Playgroud)
也像这样:
nextRemindersArray.sort(nextRemindersArray, new DateTimeComparator());
Run Code Online (Sandbox Code Playgroud)
但都有错误。
我尝试了 Joda 时间手册,但没有太大帮助。如何对数组进行排序?
在此先感谢您的帮助
我有一个从数据库获取的日期,我想将其转换为日期时间并将其设置为开始日。我写在下面:
Date fromDate = studentDateJoin.getDate();
//result: fromDate = Mon Jan 01 00:00:02 ICT 2018
//convert to DateTime
DateTime newDate = new DateTime(fromDate);
Run Code Online (Sandbox Code Playgroud)
但是当我转换它时,在转换后添加时区。新日期看起来像:
newDate = 2018-01-01T14:13:04.574Z+7
Run Code Online (Sandbox Code Playgroud)
我有一个问题:如何将其转换为开始日并删除时区:我想将其转换为如下所示的示例:
//Convert it begin day and remove time zone
newDate = 2018-01-01T00:00:00.00;
Run Code Online (Sandbox Code Playgroud)
如何将其转换为 beginDay 并删除时区:谢谢
我需要知道,在java(我的版本jdk 8)中,我可以替换,new DateTime(System.currentTimeMillis())这个代码形式,' DateTime.now()'?
我用过包import org.joda.time.DateTime;
如何在java 8中写同样的东西(日期和时间)?