标签: jodatime

在Joda-Time中,将DateTime设置为月初

我的API允许库客户端传递日期:

method(java.util.Date date)
Run Code Online (Sandbox Code Playgroud)

Joda-Time合作,从这一天开始,我想提取月份并迭代本月所有日子.

现在,传递的日期通常是新的Date() - 意味着当前的瞬间.我的问题实际上是将新的DateMidnight(jdkDate)实例设置为月初.

有人可以用Joda-Time演示这个用例吗?

java date jodatime

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

Joda-Time:DateTime,DateMidnight和LocalDate用法

Joda-Time库包含不同的日期时间

DateTime - JDK Calendar
DateMidnight的不可变替换 - 表示时间强制为午夜的不可变类
LocalDateTime - 表示本地日期和时间的不可变类(无时区)

我想知道你是如何在分层应用程序中使用这些类的.

我看到几乎所有接口都使用LocalDateTime(至少在服务层)的优势,这样我的应用程序就不必管理时区,并且可以安全地假设时间始终为UTC.然后,我的应用程序可以在执行流程的最开始使用DateTime来管理时区.

我也想知道DateMidnight在哪种情况下有用.

java datetime interface jodatime

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

比较两个Joda-Time DateTime对象

我正在处理与此处提出的问题非常类似的事情 - 比较Joda-Time时区,但它似乎对我不起作用.

这是我正在测试Joda-Time DateTime的一段代码-

 DateTime estDT = new DateTime(DateTimeZone.forID("America/Puerto_Rico")).withMillisOfSecond(0); 
 DateTime londonDT = new DateTime(DateTimeZone.forID("Europe/London")).withMillisOfSecond(0);

    System.out.println("Comparison " + londonDT.isBefore(estDT)); 
    System.out.println("Comparison " + londonDT.isAfter(estDT)); 
Run Code Online (Sandbox Code Playgroud)

有趣的是,我从上面的两个sysout语句中得到'false'.任何人都可以解释一下这种比较的正确方法是什么?

java jodatime

31
推荐指数
2
解决办法
6万
查看次数

Joda DateTime到Unix DateTime

这很奇怪,但我没有找到任何关于将Joda(时间)转换DateTime为Unix DateTime(或时间戳,无论哪个名称正确)的结果.我怎样才能做到这一点?

java jodatime unix-timestamp

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

Joda-time中的LocalDate间隔

Joda-time有一个Interval类,它是DateTime之间的范围.什么可以用于一系列的LocalDate

我想要一个对象,例如"从2011年1月1日到10/1/2011",没有时间(或时区)进入图片.

据我所知,joda-time没有内置任何东西.如果它没有任何东西,我们创造它,它应该是什么样子?最重要的是,joda-time的哪些接口可以实现最佳集成到其他类型,与joda-time设计保持一致?它的实施ReadableInterval,地点getStartgetEnd返回DateMidnight是否有意义?

java jodatime

29
推荐指数
3
解决办法
2万
查看次数

Joda Time用时区解析日期并保留该时区

我想解析一个使用特定时区创建的日期,将其转换为格式并返回.转换有效,但时区偏移始终设置为+0000,并根据需要添加/减去时差.如何使其格式化并保持偏移正确?

我期待这个:2012-11-30T12:08:56.23 + 07:00

但得到这个:2012-11-30T05:08:56.23 + 00:00

执行:

public static final String ISO_8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSZZ";

public static String formatDateToISO8601Standard(Date date) {
    DateTime dateTime = new DateTime(date);
    DateTimeFormatter df = DateTimeFormat.forPattern(ISO_8601_DATE_FORMAT);
    return dateTime.toString(df);
}
Run Code Online (Sandbox Code Playgroud)

测试类:

private static final String DATE_WITH_TIMEZONE = "30 11 2012 12:08:56.235 +0700";
private static final String EXPECTED_DATE_WITH_TIMEZONE = "2012-11-30T12:08:56.23+07:00";

@Test public void testFormattingDateWithSpecificTimezone() throws Exception {
    String result = JodaDateUtil.formatDateToISO8601Standard(createDate(DATE_WITH_TIMEZONE));
    assertEquals("The date was not converted correctly", EXPECTED_DATE_WITH_TIMEZONE, result); }

private Date createDate(String dateToParse) throws ParseException {
    DateTimeFormatter …
Run Code Online (Sandbox Code Playgroud)

java date jodatime

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

如何使用Joda-Time在Java中设置Time属性

我想在Joda-Time设置小时,分钟和秒.但是,当我设定它不改变财产.

这是我的代码:

import org.joda.time.DateTime;
public class JodaAkbar 
{
 public static void main(String args[])
 { 
    DateTime dt = new DateTime();
    System.out.println("Before:"+dt);
    dt.hourOfDay().setCopy(5);
    dt.minuteOfDay().setCopy(20);
    dt.secondOfDay().setCopy(0);
    System.out.println("After:"+dt);
 }
}
Run Code Online (Sandbox Code Playgroud)

这是输出.

Before:2015-04-01T11:01:38.277+11:00
After:2015-04-01T11:01:38.277+11:00
Run Code Online (Sandbox Code Playgroud)

我得到了相同的输出.这里发生了什么错?

编辑:

基本上,我想做类似的事情,如下面的代码所示.由于以下代码在24小时格式下无法正常工作,我切换到了Joda-Time.

 Calendar cal = Calendar.getInstance();
 cal.set(Calendar.HOUR, 13);
 cal.set(Calendar.MINUTE, 25);
 cal.set(Calendar.SECOND, 0);
Run Code Online (Sandbox Code Playgroud)

java datetime jodatime

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

使用Joda Time将Unix时间戳转换为String

尝试将Unix timstamp从数据库转换为日期格式的String时.

int _startTS = evtResult.getInt("start"); //outputs 1345867200
Long _sLong = new Long(_startTS); //outputs 1345867200
//I've also tried: Long _sLong = new Long(_startTS*1000); //outputs 1542436352
DateTime _startDate = new DateTime(_sLong); //outputs 1970-01-16T08:51:07.200-05:00
Run Code Online (Sandbox Code Playgroud)

时间戳是:Sat, 25 Aug 2012.我不知道为什么1970年总是输出,所以希望有人可以看到我正在犯的一个愚蠢的错误.

java jodatime

28
推荐指数
2
解决办法
3万
查看次数

Joda Time和Java8时差

我正在寻找一个计算两个日期之间的月份的解决方案.我认为joda或java8时间可以做到.但是当我比较它们时,我发现了一些非常奇怪的东西.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import org.joda.time.Months;

public class DateMain {
    public static void main(String[] args) throws ParseException {

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    Date d1 = simpleDateFormat.parse("2017-01-28 00:00:00.000");
    Date d2 = simpleDateFormat.parse("2017-02-28 00:00:00.000");

    System.out.println("Test Cast 1");
    System.out.println("joda time api result: " + monthsBetweenJoda(d1, d2) + " month");
    System.out.println("java8 time api result: " + monthsBetweenJava8(d1, d2) + " month");

    Date dd1 = simpleDateFormat.parse("2017-01-29 00:00:00.000");
    Date dd2 = simpleDateFormat.parse("2017-02-28 00:00:00.000");

    System.out.println("Test Cast …
Run Code Online (Sandbox Code Playgroud)

java jodatime date-difference java-8 jsr310

28
推荐指数
1
解决办法
1111
查看次数

如何在Java中将Joda LocalDate转换为String?

我得到了答案:这很简单.

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
String formattedDate = jodeLocalDateObj.toString( fmt );
Run Code Online (Sandbox Code Playgroud)

java date jodatime

27
推荐指数
3
解决办法
7万
查看次数