diff --git a/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/main/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtils.java b/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/main/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtils.java index dff9c22c95..cd2943e39d 100644 --- a/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/main/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtils.java +++ b/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/main/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtils.java @@ -25,6 +25,9 @@ import java.util.Date; import java.util.Locale; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Utility class for date and time operations. * @@ -32,6 +35,8 @@ */ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + private static final Logger logger = LoggerFactory.getLogger(DateUtils.class); + // Date format patterns public static final String DATE_JFP_STR = "yyyyMM"; @@ -208,15 +213,13 @@ public static Date parseDate(Object str) { */ public static Date parseDateString(String time) { SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); - Date d = new Date(); try { - d = sdf.parse(time); + return sdf.parse(time); } catch (ParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.warn("Failed to parse date string: {}", time, e); + return null; } - return d; } /** diff --git a/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/test/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtilsTests.java b/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/test/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtilsTests.java new file mode 100644 index 0000000000..163ee81c5a --- /dev/null +++ b/spring-ai-alibaba-studio/spring-ai-alibaba-studio-server/spring-ai-alibaba-studio-server-core/src/test/java/com/alibaba/cloud/ai/studio/core/utils/common/DateUtilsTests.java @@ -0,0 +1,44 @@ +/* + * Copyright 2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.ai.studio.core.utils.common; + +import org.junit.jupiter.api.Test; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link DateUtils}. + */ +class DateUtilsTests { + + @Test + void parseDateStringReturnsDateWhenFormatMatches() throws Exception { + String time = "Wed Sep 11 12:00:00 GMT 2024"; + Date expected = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH).parse(time); + assertThat(DateUtils.parseDateString(time)).isEqualTo(expected); + } + + @Test + void parseDateStringReturnsNullOnParseFailure() { + assertThat(DateUtils.parseDateString("invalid-date")).isNull(); + } + +}