小编Ole*_*.V.的帖子

使用SimpleDateFormat时,未知的模式字符'x'

我试图将a格式化DateString使用SimpleDateFormat,而im使用的模式就是这个

"YYYY-MM-dd'T'HH:MM:ss.SSSxxx"

但到达这条线时

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSxxx");
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

java.lang.IllegalArgumentException:在java.text.SimpleDateFormat的java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:312)的java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:323)中的未知模式字符'x'. SimpleDateFormat.java:365)at java.text.SimpleDateFormat.(SimpleDateFormat.java:258)

我试图实现的格式是" 2017-06-16T12:19:59.001 + 02:00 "

根据文档这个模式应该工作什么错了?

编辑 为了澄清,我尝试了xxx和XXX

在XXX的情况下我得到java.lang.IllegalArgumentException:未知的模式字符'X'

java android simpledateformat android-date

6
推荐指数
3
解决办法
4798
查看次数

两个实例之间的Java年份

在Joda中,我们可以计算2个Datetime之间的年份

Years.between(dateTime1, dateTime2);
Run Code Online (Sandbox Code Playgroud)

是否有任何简单的方法可以在2个时刻之间找到使用java.timeAPI而没有太多逻辑的年份?

ChronoUnit.YEARS.between(instant1, instant2)
Run Code Online (Sandbox Code Playgroud)

失败:

Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Years
        at java.time.Instant.until(Instant.java:1157)
        at java.time.temporal.ChronoUnit.between(ChronoUnit.java:272)
        ...
Run Code Online (Sandbox Code Playgroud)

java datetime date-difference java-8 java.time.instant

6
推荐指数
1
解决办法
1036
查看次数

即时与ZonedDateTime

我只是不太了解在以下示例中应该使用这两个中的哪一个:

我们有OfferEntity一个成员availableDay,该成员是要约可用的日期。

现在,该表将如下所示:

CREATE TABLE IF NOT EXISTS offer (
  created   timestamp with time zone NOT NULL DEFAULT NOW(),
  id        BIGSERIAL PRIMARY KEY,
  available timestamp with time zone
);
Run Code Online (Sandbox Code Playgroud)

PostgreSQL文档中我们知道:

对于timestamp with time zone,内部存储的值始终以UTC(通用协调时间,通常称为格林威治标准时间,GMT)表示。使用该时区的适当偏移量,将指定了明确时区的输入值转换为UTC。如果在输入字符串中未指定时区,则假定该时区位于系统TimeZone参数指示的时区中,并使用时区的偏移量将其转换为UTC。

这意味着在保留任何日期/时间信息时我应该没问题。

但这对我OfferEntity和我定义的REST端点意味着什么OfferController

@Entity
@Table(name = "offer")
public class OfferEntity {    
    @Column(name = "available", nullable = false)
    private ZonedDateTime availableDay;
}
Run Code Online (Sandbox Code Playgroud)

@Entity
@Table(name = "offer")
public class OfferEntity {    
    @Column(name = "available", …
Run Code Online (Sandbox Code Playgroud)

postgresql utc timestamp-with-timezone zoneddatetime java.time.instant

6
推荐指数
1
解决办法
813
查看次数

当我将 LocalDate 格式化为 dd.MMM.YYYY 时,我得到 01.Jan..2000,带有两个点

我正在尝试将LocalDate变量格式化为dd.MMM.YYYY

DateTimeFormatter.ofPattern("dd.MMM.yyyy")
Run Code Online (Sandbox Code Playgroud)

问题是,超过一半的时间我得到两个点。例如01-01-2000转到01.Jan..2000.

我知道为什么我会遇到这个问题,因为这三个Ms。当我使用时dd.MM.yyyy,我没有01.01.2000问题。第三M是问题。

我怎样才能解决这个问题?

java date-formatting java-time

6
推荐指数
1
解决办法
3903
查看次数

比较java.util.Date时,比较方法违反了它的一般契约

我收到以下错误:

Caused by: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) [jboss-jsf-api_2.1_spec-2.1.28.SP1-redhat-1.jar:2.1.28.SP1-redhat-1]
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101) [jsf-impl-2.1.28.redhat-10.jar:2.1.28.redhat-10]
    at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.1.28.SP1-redhat-1.jar:2.1.28.SP1-redhat-1]
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786) [jboss-jsf-api_2.1_spec-2.1.28.SP1-redhat-1.jar:2.1.28.SP1-redhat-1]
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251) [jboss-jsf-api_2.1_spec-2.1.28.SP1-redhat-1.jar:2.1.28.SP1-redhat-1]
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.28.redhat-10.jar:2.1.28.redhat-10]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.28.redhat-10.jar:2.1.28.redhat-10]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.28.redhat-10.jar:2.1.28.redhat-10]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.1.28.SP1-redhat-1.jar:2.1.28.SP1-redhat-1]
    ... 29 more
Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeHi(TimSort.java:899) [rt.jar:1.8.0_65]
    at java.util.TimSort.mergeAt(TimSort.java:516) [rt.jar:1.8.0_65]
    at java.util.TimSort.mergeForceCollapse(TimSort.java:457) [rt.jar:1.8.0_65]
    at java.util.TimSort.sort(TimSort.java:254) [rt.jar:1.8.0_65]
    at java.util.Arrays.sort(Arrays.java:1512) [rt.jar:1.8.0_65]
    at java.util.ArrayList.sort(ArrayList.java:1454) [rt.jar:1.8.0_65]
    at java.util.Collections.sort(Collections.java:175) [rt.jar:1.8.0_65]
Run Code Online (Sandbox Code Playgroud)

下面是我的比较方法代码.vo1.getAttribute()返回java.util.DateObject.

    @Override
    public int compare(DateComparableVO …
Run Code Online (Sandbox Code Playgroud)

java date comparator illegalargumentexception

5
推荐指数
2
解决办法
3743
查看次数

java.sql.SQLException:java.sql.Time的非法小时值'50',值为'50:51:05

当我尝试从MySQL检索时间并将其设置为a时JLabel,它会给我一个错误.

java.sql.SQLException:java.sql.Time的非法小时值'50',值为'50:51:05.

任何人都可以建议我如何解决这个问题?

代码如下.

        String sql = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ot)))"
                + " FROM attendance"
                + " WHERE department = '"+department+"'"
                + "   AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
        st = con.createStatement();
        rst = st.executeQuery(sql);
        if(rst.next())
        {
            String time = rst.getString(1);
            oTimeTemp.setText(time);
        }
Run Code Online (Sandbox Code Playgroud)

java mysql time duration

5
推荐指数
1
解决办法
1554
查看次数

如何将Google原始时间戳转换为Java LocalDate?

我们需要将Google Proto缓冲时间戳转换为正常日期。在这种情况下,是否可以将Google Proto缓冲区时间戳LocalDate直接转换为Java ?

java date proto grpc grpc-java

5
推荐指数
1
解决办法
3842
查看次数

无法获取任务“:app:processDebugManifest”的未知属性“instantRunManifestOutputDirectory”

自从我将 android studio 升级到3.5. 我在谷歌上找不到任何结果来解决这个问题。我需要帮助。谢谢。

我打开了一个新项目,只添加了下面的 build.gradle 并且错误仍然出现。

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'im.getsocial'

getsocial {
    appId "11111111"
}

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.app.ej"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0' …
Run Code Online (Sandbox Code Playgroud)

java android manifest instant output

5
推荐指数
1
解决办法
3522
查看次数

Instant.EPOCH的Java 8时区不正确

我有一台Linux机器,其时区设置为Asia / Qatar。当我使用格式化程序打印Instant.EPOCH时,它给我错误的区域信息,而对于Instant.now(),区域信息是正确的。下面是我的代码及其输出。谁能帮我,为什么会有这个差异?

import java.util.Date;
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZoneId;

public class DateTest {
   public static void main(String[] args) {
      String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS Z";
      Instant myInstant = Instant.EPOCH;
      Instant myInstantNow = Instant.now();
      DateTimeFormatter formatter =  DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
      System.out.println(formatter.format(myInstant));
      System.out.println(formatter.format(myInstantNow));
   }
}
Run Code Online (Sandbox Code Playgroud)

代码的输出为:

1970-01-01T04:00:00.000 +0400
2019-09-29T18:30:14.766 +0300
Run Code Online (Sandbox Code Playgroud)

Java版本:“ 1.8.0_181”

如果我在Windows中运行相同的代码,它的工作正常。我的Instant.EPOCH也得到+0300。

java timezone timezone-offset java-8

5
推荐指数
1
解决办法
97
查看次数

为什么 Jackson 将 ZonedDateTime 转换为十进制?

我试图理解为什么 Jackson 在 Spring 集成测试中获取 MvcResult 时将 ZonedDateTime 转换为 Decimal ?

这是预计日期:2019-10-01T10:10:44+02:00[欧洲/巴黎] 实际结果:1572426644.000000000

java spring jackson zoneddatetime

5
推荐指数
1
解决办法
1358
查看次数