Tag: jodatime

Joda的当前日期时间 – mysql时间戳的时间日期格式

我需要将当前日期和时间导入MySQL数据库字段,其格式为TimeStamp 。 从检查样本数据来看,MySQL TimeStamp数据类型的格式似乎是“yyyy-mm-dd hh:mm:ss”。 我在我的spring hibernate应用程序中使用Joda-Time格式。 如何以基础MySQL TimeStamp格式化字段接受的格式获取当前日期时间? 这是我当前的代码,它不会编译,因为eclipse说.parseDateTime()需要一个字符串参数而不是DateTime参数: public void setCreated(){ DateTime now = new org.joda.time.DateTime(); DateTimeFormatter fmt = DateTimeFormat.forPattern(“yyyy-MM-dd hh:mm:ss”); created = fmt.parseDateTime(now); System.out.println(“””””””””””” created is: “+created); } 我试图坚持的实体定义如下: @Entity @Table(name = “documents”) public class Document { @Id @GeneratedValue @Column(name=”id”) private Integer id; @ManyToOne @JoinColumn(name = “client_id”) private Patient patient; @ManyToOne @JoinColumn(name […]

Java SystemV时区和JodaTime

我正在使用JodaTime在Java应用程序中使用时区。 尝试从java时区的id构建DateTimeZone(JodaTime)对象时遇到问题。 乔达扔了一个 java.lang.IllegalArgumentException: The datetime zone id ‘SystemV/HST10’ is not recognised 对于下面的时区列表: SystemV / HST10 SystemV / YST9 SystemV / YST9YDT SystemV / PST8 SystemV / PST8PDT SystemV / MST7 SystemV / MST7MDT SystemV / CST6 SystemV / CST6CDT SystemV / EST5 SystemV / EST5EDT SystemV / AST4 SystemV / AST4ADT 这些时区用于什么? 它们与非程序员有关吗? 设计用于一般用途的应用程序是否应支持这些时区? […]

Joda-Time – 如何找到“月的第二个星期四”

我没有看到一个很好的方法来设置一个月的某个星期的某一天的某一天的日期。 Joda-Time的LocalDate没有withWeekOfMonth方法。 我可以看到一个可能的算法,但它看起来很复杂,所以我会假设我错过了一些东西。 我需要的是确定某人付款的下一个日期。 如果他们在本月的第二个星期四付款,那是什么日期。 有人已经解决了这个问题? 好吧,我能够想出这个,这似乎工作正常。 /** * Finds a date such as 2nd Tuesday of a month. */ public static LocalDate calcDayOfWeekOfMonth( final DayOfWeek pDayOfWeek, final int pWeekOfMonth, final LocalDate pStartDate ) { LocalDate result = pStartDate; int month = result.getMonthOfYear(); result = result.withDayOfMonth( 1 ); result = result.withDayOfWeek( pDayOfWeek.ordinal() ); if ( […]

为什么在Android中的Zone更改时,DateTimeZone.getDefault()不会更新

我在Stackoverflow上回顾了许多与TimeZones相关的问题,但我找不到我正在努力解决的问题: 为什么Joda的DateTimeZone.getDefault()在TZ更改时没有返回更新的时区(恢复应用程序后?)。 TimeZone.getDefault()似乎工作正常 。 我应该使用DateTimeZone.forTimeZone(TimeZone.getDefault())来获取最新的Joda的DateTimeZone对象吗? 以下是如何复制: 启动打印DateTimeZone.getDefault()和TimeZone.getDefault()应用程序: 09-15 16:46:59.512 14961-14961 / com.example.android.whatever D / TimeZone: DateTimeZone.getDefault()= Europe / London; TimeZone.getDefault()= libcore.util.ZoneInfo [id =“Europe / London” ,…] 转到设置 – >将时区更改为PDT。 返回打印东西的应用程序(例如在onResume()中): 09-15 08:49:24.727 14961-14961 / com.example.android.whatever D / TimeZone: DateTimeZone.getDefault()= Europe / London; TimeZone.getDefault()libcore.util.ZoneInfo [id =“America / Los_Angeles” ,…] 在这个阶段,我可以旋转App。 DateTimeZone.getDefault()将被卡住。 只有在应用onRestart之后 – 该值才是正确的。 为什么会这样?

Java ZonedDateTime到即时转换

我计划按照以下逻辑将ZonedDateTime转换为即时。 说,我在PST时区,目前的时间是11A.M. 如果我现在转换(截至2018年3月4日没有夏令时),toInstant将是7P.M. 对于同样的上午11点,toInstant将在2018年4月4日下午6点返回,因为将观察到夏令时。 所以,下面的代码正确返回。 ZonedDateTime dateTime = ZonedDateTime.now(); —>>> March 04th 2018 at 11 AM PST dateTime.plusMonths(1).toInstant(); –>> returns April 04th 2018 at 6 PM PST as daylight saving will be observed 但, 如果我转换为Instant然后再添加一个月,结果将会有所不同。 Instant dateTime = ZonedDateTime.now().toInstant(); —>>> March 04th 2018 at 7 PM UTC dateTime.plus(1,ChronoUnit.MONTHS).toInstant(); –>> returns April 04th 2018 at 7 […]

Jodatime日期格式

是否可以格式化JodaTime日期。 这是代码: private static LocalDate priorDay(LocalDate date1) { do { date1 = date1.plusDays(-1); } while (date1.getDayOfWeek() == DateTimeConstants.SUNDAY || date1.getDayOfWeek() == DateTimeConstants.SATURDAY); //System.out.print(date1); return date1; } 这里date1返回为: 2013-07-02,但我想作为02-JUL-13 提前致谢

Spring Boot忽略@JsonDeserialize和@JsonSerialize

我有一个带有RESTful端点的Spring Boot应用程序,我想为joda-time添加自定义序列化程序,但我无法让应用程序默认Jackson serailzier识别我的自定义端口。 我使用@RepositoryRestResource创建了RESTFul端点 @RepositoryRestResource(collectionResourceRel = “x”, path = “x”) public interface XRepository extends PagingAndSortingRepository { } 然后我有一个GET调用来返回所有对象X: HTTP://本地主机:8181 / X 这是我的序列化器: @Component public class JsonDateSerializer extends JsonSerializer { private static DateTimeFormatter formatter = DateTimeFormat.forPattern(“dd/MM/yyyy”); @Override public void serialize(DateTime value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException { gen.writeString(formatter.print(value)); } } 我将它添加到属性Getter,如下所示: @JsonSerialize(using=JsonDateSerializer.class) public DateTime […]

PeriodFormatter不显示天数

我使用PeriodFormatter返回一个字符串,显示事件发生的时间。 下面的代码不断创建字符串,如1146小时39分钟,而不是x天y小时z分钟。 有任何想法吗? 谢谢,内森 PeriodFormatter formatter = new PeriodFormatterBuilder() .printZeroNever() .appendDays() .appendSuffix( “d ” ) .appendHours() .appendSuffix( “h ” ) .appendMinutes() .appendSuffix( “m ” ) .toFormatter(); return formatter.print( duration.toPeriod() );

validation时间戳格式yyyy-MM-dd’T’HH:mm:ssZ在java中?

我正在尝试使用joda time-1.6.2进行时间戳validation。 请指出我的错误并帮助我。 码 String timestamp = “2014-09-23T23:03:11Z”; String datePattern = “yyyy-MM-dd’T’HH:mm:ssZ”; try { DateTimeFormatter dateFormatter = DateTimeFormat.forPattern(datePattern); dateFormatter.parseDateTime(timestamp); } catch (Exception e) { LOG.info(“Timestamp is invalid format” + e); } 例外 INFO: Timestamp is invalid formatjava.lang.IllegalArgumentException: Invalid format: “2014-09-23T23:03:11Z” is malformed at “Z”

如何让Joda DateTime解析器只接受yyyyMMddforms的字符串?

我想使用Joda-Time以yyyyMMdd格式解析日期(因此日期应该有八位数)。 我按如下方式定义了日期格式化程序 DateTimeFormatter formatter = DateTimeFormat.forPattern(“yyyyMMdd”).withZoneUTC(); // a valid eight-digit date String dateValid = “20130814”; DateTime dateJoda = formatter.parseDateTime(dateValid); System.out.println(dateJoda.toString()); // an invalid seven digit date String dateInvalid = “2013081”; dateJoda = formatter.parseDateTime(dateInvalid); System.out.println(dateJoda.toString()); 我希望在解析第二个无效日期时看到exception。 但是代码的输出是 2013-08-14T00:00:00.000Z 2013-08-01T00:00:00.000Z 为什么Joda解析器只接受7位数的无效日期? 如何更改格式化程序以不接受任何没有8位数字的日期?