Java JodaTime日期时间和使用AM/PM处理区域设置
请任何人向我解释一下,DateTime在上午/下午是如何工作的Java JodaTime日期时间和使用AM/PM处理区域设置,java,datetime,jodatime,Java,Datetime,Jodatime,请任何人向我解释一下,DateTime在上午/下午是如何工作的 public DateTime( int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond, DateTimeZone zone) {
public DateTime(
int year,
int monthOfYear,
int dayOfMonth,
int hourOfDay,
int minuteOfHour,
int secondOfMinute,
int millisOfSecond,
DateTimeZone zone) {
super(year, monthOfYear, dayOfMonth,
hourOfDay, minuteOfHour, secondOfMinute, millisOfSecond, zone);
}
我知道我可以通过DateFormat和解析字符串来处理AM/PM,但我对这种方法感兴趣。我想不出来。因为DateTimeZone与区域设置没有直接关系,所以年表也不直接相关
我是否必须根据上午/下午信息手动将小时数更改为24小时类型
我正在使用一个UI html表单小部件>>http请求6个参数,基于区域设置y、m、d、h、m、AM/PM/y、m、d、h、m>>现在我想通过JodaTime的DateTime对象从这些5/6值创建Date对象。我是否可以手动将y、m、d、h、m、AM/PM转换为y、m、d、h、m
我会这样做
public static Date getDateSinceUTC2(Target orderBean, TimeZone tz) {
int ap = orderBean.getDeadLineAmPm();
int year = orderBean.getDeadLineYear();
int month = orderBean.getDeadLineMonth();
int day = orderBean.getDeadLineDay();
int hour = orderBean.getDeadLineHour();
int minute = orderBean.getDeadLineMinute();
if (ap == 1) {
hour += 12;
}
month++;
DateTime dt = new DateTime(year, month, day, hour, minute, 0, 0, DateTimeZone.forID(tz.getID()));
return new Date(dt.getMillis());
}
首先,我会开始使用LocalDateTime,除非你有一个时区 但您可以创建DateTime或LocalDateTime,方法是为其指定任意时间,然后使用:
// I'm assuming amPm is 0 for am and 1 for pm
result = original.withField(DateTimeFieldType.hourOfHalfDay(), hour)
.withField(DateTimeFieldType.halfDayOfDay(), amPm);
我想我个人可能会自己执行转换为24小时制。首先,我会开始使用LocalDateTime,除非你有一个时区 但您可以创建DateTime或LocalDateTime,方法是为其指定任意时间,然后使用:
// I'm assuming amPm is 0 for am and 1 for pm
result = original.withField(DateTimeFieldType.hourOfHalfDay(), hour)
.withField(DateTimeFieldType.halfDayOfDay(), amPm);
不过,我想我个人可能会亲自执行24小时制的转换。关于上午/下午,你是什么意思?你想干什么?我很了解Joda Time,但我不知道处理AM/PM是什么意思。问题是,DateTime是否只接受非美国日期格式?日期格式是字符串表示形式,没有使用AM/PM概念。你是说AM/PM仅作为DateFormat使用的字符串表示形式存在,而JodaTime和Java的日期库的其余部分不使用它?不,我根本没有这么说。我是说非美国日期格式的想法是基于字符串的概念。您使用的哪些字段与区域设置无关,除非您正在解析。对于AM/PM,您的意思是什么?你想干什么?我很了解Joda Time,但我不知道处理AM/PM是什么意思。问题是,DateTime是否只接受非美国日期格式?日期格式是字符串表示形式,没有使用AM/PM概念。你是说AM/PM仅作为DateFormat使用的字符串表示形式存在,而JodaTime和Java的日期库的其余部分不使用它?不,我根本没有这么说。我是说非美国日期格式的想法是基于字符串的概念。您使用的字段与区域设置无关,除非您正在解析。好的,谢谢Jon,我在问题中得到的手动转换是正确的,对吗?+1表示读心术中的持久性。。。但我担心+1会给纽卡斯尔带来麻烦。@埃德加:不完全是这样-这取决于你在午夜得到什么,通常是凌晨12点。在这种情况下,你想减去12,但你想让中午12点单独呆着。也许使用磁场毕竟是一个更好的主意:这个世界对机器来说是一个充满敌意的环境:-@Edgar:如果你认为这很时髦,你应该看看世界上其他的日期和时间。这简直是疯了。好吧,谢谢你,乔恩,我在问题中得到的手动转换是正确的,对吗?+1表示持续读心术。。。但我担心+1会给纽卡斯尔带来麻烦。@埃德加:不完全是这样-这取决于你在午夜得到什么,通常是凌晨12点。在这种情况下,你想减去12,但你想让中午12点单独呆着。也许使用磁场毕竟是一个更好的主意:这个世界对机器来说是一个充满敌意的环境:-@Edgar:如果你认为这很时髦,你应该看看世界上其他的日期和时间。这简直是疯了。