local date php,Joda LocalDate-还有时间吗?

我在找一个合适的可序列化的仅日期类。在中央时区有一个服务器,我希望东部的用户输入日期为2010-11-23,太平洋的用户将其视为2010-11-23(反之亦然)。

java.util.Date

是一个时间敏感的瞬间,所以对我不起作用。由于不想重新发明轮子,我决定给乔达一次机会。根据概述,

LocalDate

是“表示没有时间(没有时区)的本地日期的类”-正是我需要的。

不幸的是,它似乎并不独立于时区。数据库里有2010-11-23。在服务器上,我将其转换为

本地日期

具有

new LocalDate(java.sql.Date)

.

date.toString()

打印2010-11-23。

在客户端反序列化之后,

date.ToString()

打印2010-11-22和

date.getDayOfMonth()

22岁。但是

date.toDateTimeAtStartOfDay()

生产日期:2010-11-23T00:00:00.000-08:00。

我做错什么了吗?Joda中是否有一个只对日期不敏感的时区类?

编辑

:在数据库中,我正在使用不区分时区的列(

DATE

在博士后)服务器与数据库位于同一时区,因此它读取的日期正好这不是问题。

我正在寻找一个Java类型,它一旦在一个时区中实例化,在所有时区中都具有相同的civil(部分)日期值。

编辑2

:在服务器上,所有内容都已正确加载并具有UTC时区。经过调查我认为这是个漏洞

ISOChronology

. 客户方将其开箱为美国/洛杉矶。原因是序列化是通过以下方式完成的:

class ISOChronology {

// ...

private Object writeReplace() {

return new Stub(getZone());

}

private static final class Stub implements Serializable {

private static final long serialVersionUID = -6212696554273812441L;

private transient DateTimeZone iZone;

Stub(DateTimeZone zone) {

iZone = zone;

}

private Object readResolve() {

return ISOChronology.getInstance(iZone);

}

private void writeObject(ObjectOutputStream out) throws IOException {

out.writeObject(iZone);

}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {

iZone = (DateTimeZone)in.readObject();

}

}

}

祝你好运,用一个瞬变场连载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值