tbDate: fix bug comments 3
This commit is contained in:
		
							parent
							
								
									3bf585ec80
								
							
						
					
					
						commit
						7e00acd44b
					
				@ -488,41 +488,11 @@ public class TbDate implements Serializable, Cloneable {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static Instant parseInstant(String s) {
 | 
			
		||||
        DateTimeFormatter formatter;
 | 
			
		||||
        boolean isIsoFormat = s.length() > 0 && Character.isDigit(s.charAt(0));
 | 
			
		||||
        if (isIsoFormat) {
 | 
			
		||||
            // assuming  "2007-12-03T10:15:30.00Z"  UTC instant
 | 
			
		||||
            // assuming  "2007-12-03T10:15:30.00"  ZoneId.systemDefault() instant
 | 
			
		||||
            // assuming  "2007-12-03T10:15:30.00-04:00"  TZ instant
 | 
			
		||||
            // assuming  "2007-12-03T10:15:30.00+04:00"  TZ instant
 | 
			
		||||
            formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
 | 
			
		||||
            return getInstant_ISO_OFFSET_DATE_TIME(s);
 | 
			
		||||
        } else {
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 GMT"
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 GMT-02:00"
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 -0200"
 | 
			
		||||
            formatter = DateTimeFormatter.RFC_1123_DATE_TIME;
 | 
			
		||||
        }
 | 
			
		||||
        try{
 | 
			
		||||
            return Instant.from(formatter.parse(s));
 | 
			
		||||
        } catch (Exception ex) {
 | 
			
		||||
            try {
 | 
			
		||||
                if (isIsoFormat) {
 | 
			
		||||
                    long timeMS = parse(s);
 | 
			
		||||
                    if (timeMS != -1) {
 | 
			
		||||
                        return Instant.ofEpochMilli(timeMS);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        final ConversionException exception = new ConversionException("Cannot parse value [" + s + "] as instant", ex);
 | 
			
		||||
                        throw exception;
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 -0200"
 | 
			
		||||
                    // The offset ID without colons or seconds.
 | 
			
		||||
                    return getInstantWithLocalZoneOffsetId_RFC_1123(s);
 | 
			
		||||
                }
 | 
			
		||||
            } catch (final DateTimeParseException e) {
 | 
			
		||||
                final ConversionException exception = new ConversionException("Cannot parse value [" + s + "] as instant", e);
 | 
			
		||||
                throw exception;
 | 
			
		||||
            }
 | 
			
		||||
            return getInstant_RFC_1123(s);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -552,6 +522,42 @@ public class TbDate implements Serializable, Cloneable {
 | 
			
		||||
        return zonedDateTime.toInstant();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static Instant getInstant_ISO_OFFSET_DATE_TIME(String s) {
 | 
			
		||||
        // assuming  "2007-12-03T10:15:30.00Z"  UTC instant
 | 
			
		||||
        // assuming  "2007-12-03T10:15:30.00"  ZoneId.systemDefault() instant
 | 
			
		||||
        // assuming  "2007-12-03T10:15:30.00-04:00"  TZ instant
 | 
			
		||||
        // assuming  "2007-12-03T10:15:30.00+04:00"  TZ instant
 | 
			
		||||
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
 | 
			
		||||
        try {
 | 
			
		||||
            return Instant.from(formatter.parse(s));
 | 
			
		||||
        } catch (DateTimeParseException ex) {
 | 
			
		||||
            try {
 | 
			
		||||
                long timeMS = parse(s);
 | 
			
		||||
                if (timeMS != -1) {
 | 
			
		||||
                    return Instant.ofEpochMilli(timeMS);
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw new ConversionException("Cannot parse value [" + s + "] as instant");
 | 
			
		||||
                }
 | 
			
		||||
            } catch (final DateTimeParseException e) {
 | 
			
		||||
                throw new ConversionException("Cannot parse value [" + s + "] as instant");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    private static Instant getInstant_RFC_1123(String s) {
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 GMT"
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 GMT-02:00"
 | 
			
		||||
            // assuming RFC-1123 value "Tue, 3 Jun 2008 11:05:30 -0200"
 | 
			
		||||
        DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME;
 | 
			
		||||
        try {
 | 
			
		||||
            return Instant.from(formatter.parse(s));
 | 
			
		||||
        } catch (DateTimeParseException ex) {
 | 
			
		||||
            try {
 | 
			
		||||
                return getInstantWithLocalZoneOffsetId_RFC_1123(s);
 | 
			
		||||
            } catch (final DateTimeParseException e) {
 | 
			
		||||
                throw new ConversionException("Cannot parse value [" + s + "] as instant");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    private static Instant getInstantWithLocalZoneOffsetId_RFC_1123(String value) {
 | 
			
		||||
        String s = value.trim() + " GMT";
 | 
			
		||||
        Instant instant = Instant.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse(s));
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user