我将使用第三方API.他们接受日期模式,如:
2012-02-15T17:34:37.937-0600
Run Code Online (Sandbox Code Playgroud)
我知道模式应该匹配
yyyy-MM-ddTHH:mm:ss.s
Run Code Online (Sandbox Code Playgroud)
但我不知道如何代表最后一个"-0600"时区?我认为标准时区是"-06:00",任何人都知道如何摆脱日期模式中的":"?
谢谢.
我在将Timestamp对象转换为joda的LocalTime时遇到问题.
见下面的例子:
public static void main(String[] args) {
Timestamp t = Timestamp.valueOf("1111-11-11 00:00:00");
System.out.println(t); //-- prints '1111-11-11 00:00:00.0'
System.out.println(new LocalDate(t)); //-- prints '1111-11-17'
Calendar calendar = Calendar.getInstance();
calendar.setTime(t);
System.out.println(LocalDate.fromCalendarFields(calendar)); //-- prints '1111-11-11'
}
Run Code Online (Sandbox Code Playgroud)
我无法确定为什么'new LocalDate(t)'会导致'1111-11-17'.任何人都可以帮助我吗?
我在使用joda-time-hibernate填充我的bean类型为LocalDate的属性时注意到这个"问题".
joda.time中是否有任何函数验证字符串是否表示正确的时区,如果格式不正确则抛出异常?
我知道TimeZone.getAvalibaleIDs(),但只是想知道是否有任何预定义的功能.
我需要一个java.sql.Timestamp但是当我尝试从LocalDateTime转换时,它失败了,因为当输入字符串转换为LocalDateTime时,添加了字母"T",如2013-03-15T00:00:00.000.有任何想法吗?或者有更好的方法将字符串转换为时间戳吗?我只想使用joda,以防将来需要操作时间.
谢谢.
我正在尝试将DateTime对象映射到TimeStamp SQL列.
import org.springframework.format.annotation.DateTimeFormat;
...
@Column
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
@DateTimeFormat(style="SS")
private DateTime dateSmoked;
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring表单标签让用户根据@DateTimeFormat(style ="SS")输入"mm/dd/YYYY HR:MIN AM/PM"类型的日期输入.我已经导入了joda-time-hibernate包和所有其他必需的包
当我提交表单时,我收到以下错误:org.joda.time.contrib.hibernate.PersistentDateTime.nullSafeSet(Ljava/sql/PreparedStatement; Ljava/lang/Object; ILorg/hibernate/engine/spi/SessionImplementor;)V
很清楚我做错了什么.有人能指出我正确的方向吗?
这段代码:
DateTime n1 = DateTime.now(DateTimeZone.forID("America/Chicago"));
System.out.println(n1);
DateTime n2 = n1.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0);
System.out.println(n2);
Run Code Online (Sandbox Code Playgroud)
结果输出:
2014-11-02T15:03:16.387-06:00
2014-11-02T00:00:00.000-05:00
Run Code Online (Sandbox Code Playgroud)
为什么UTC的偏移会根据此分配而改变?
我使用的乔达库格式化字符串喜欢hh:mm am/pm到LocalTime我的Android应用程序,所以我用这个:
DateTimeFormat.forPattern("hh:mm a").parseLocalTime("6:30 AM");
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我改变我的手机语言(德国或西班牙语)时,它会抛出这个例外:
W/System.err? java.lang.IllegalArgumentException: Invalid format: "06:30 AM" is malformed at "AM"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
此代码引发“无效格式”或“格式错误”异常:
码:
strDate = "21/10/2015 12:00:00 AM";
format = "dd/MM/yyyy hh:mm:ss a";
DateTime.parse(strDate, DateTimeFormat.forPattern(format)).toDate();
Run Code Online (Sandbox Code Playgroud)
例外:
java.lang.IllegalArgumentException: Invalid format: "21/10/2015 12:00:00 AM"
is malformed at "AM"
Run Code Online (Sandbox Code Playgroud)
怎么了?
我正在使用Joda-Time:2.8.1
(我已经搜索过,并且我认为这是该strDate的正确模式)
我需要将"11/17"字符串日期(2017年11月)转换为"2017-11-01"(2017年11月1日).
在Java中实现这一目标的最佳方法是什么?
我试过了:
String dayMonthYear = "11/17";
dayMonthYear = "01/" + dayMonthYear;
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yy");
DateTime dt = formatter.parseDateTime(dayMonthYear);
dt.year().setCopy(dt.getYear() + 2000);
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd");
dayMonthYear = dtfOut.print(dt);
System.out.println(dayMonthYear); // "2017-11-01";
Run Code Online (Sandbox Code Playgroud)
和:
SimpleDateFormat dateFormatTwoDigitsYear = new SimpleDateFormat(TWO_DIGITS_YEAR_DATE_FORMAT); //"dd/MM/yy"
SimpleDateFormat dateFormatFourDigitsYear = new SimpleDateFormat(FOUR_DIGITS_YEAR_DATE_FORMAT);// "yyyy-MM-dd"
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -100);//??? I AM NOT SURE WHY DO I NEEED THIS??
dateFormatTwoDigitsYear.set2DigitYearStart(calendar.getTime());
try
{
dayMonthYear = dateFormatFourDigitsYear.format(dateFormatTwoDigitsYear.parse(dayMonthYear));
}
catch (ParseException e)
{
log.error("Error while formatting date …Run Code Online (Sandbox Code Playgroud) 如何将Mon Jul 01 08:00:00 IST 2019字符串类型的日期“ ” 转换为ISODate“ 2019-07-01T03:00:00.000Z”?