相关疑难解决方法(0)

"正确"的JSON日期格式

我已经看到了许多不同的JSON日期格式标准:

"\"\\/Date(1335205592410)\\/\""         .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\""    .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z"              JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00"             ISO 8601
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的?还是最好的?这有什么标准吗?

javascript json

1071
推荐指数
9
解决办法
97万
查看次数

如何在Android Project中使用ThreeTenABP

我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.

对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:

>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)

datetime android android-gradle-plugin threetenbp threetenabp

169
推荐指数
3
解决办法
2万
查看次数

将日期字符串解析为java.util.Date时出现非法模式字符"T"

我有一个日期字符串,我想解析它到正常日期使用java Date API,以下是我的代码:

public static void main(String[] args) {
    String date="2010-10-02T12:23:23Z";
    String pattern="yyyy-MM-ddThh:mm:ssZ";
    SimpleDateFormat sdf=new SimpleDateFormat(pattern);
    try {
        Date d=sdf.parse(date);
        System.out.println(d.getYear());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我有一个例外: java.lang.IllegalArgumentException: Illegal pattern character 'T'

所以我想知道我是否必须拆分字符串并手动解析它?

顺便说一句,我试图在T的两边添加单引号字符:

String pattern="yyyy-MM-dd'T'hh:mm:ssZ";
Run Code Online (Sandbox Code Playgroud)

它也行不通.

java date iso8601 simpledateformat

164
推荐指数
2
解决办法
11万
查看次数

simpledateformat使用'Z'文字解析日期

我试图解析一个看起来像这样的日期:

yyyy-MM-dd'T'HH:mm:ss
Run Code Online (Sandbox Code Playgroud)

这是http://www.ietf.org/rfc/rfc3339.txt的有效日期."Z"字面意思"暗示UTC是指定时间内的首选参考点."

如果我尝试使用SimpleDateFormat和此模式解析它:

yyyy-MM-dd'T'HH:mm:ssz
yyyy-MM-dd'T'HH:mm:ssZ
Run Code Online (Sandbox Code Playgroud)

它将被解析为2010年4月5日17:16:00美国东部时间2010年

SimpleDateFormat无法使用以下模式解析字符串:

yyyy-MM-dd'T'HH:mm:ss
Run Code Online (Sandbox Code Playgroud)

我可以显式设置TimeZone在SimpleDateFormat上使用以获得预期的输出,但我不认为这是必要的.有什么我想念的吗?有替代日期解析器吗?

java timezone datetime parsing simpledateformat

73
推荐指数
7
解决办法
12万
查看次数

java.text.ParseException:无法解析的日期"yyyy-MM-dd'T'HH:mm:ss.SSSZ" - SimpleDateFormat

我很感激找到这个例外的bug的任何帮助:

java.text.ParseException: Unparseable date: "2007-09-25T15:40:51.0000000Z"
Run Code Online (Sandbox Code Playgroud)

以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = sdf.parse(timeValue);
long mills = date.getTime();
this.point.time = String.valueOf(mills);
Run Code Online (Sandbox Code Playgroud)

它抛出了暴力Date date = sdf.parse(timeValue);.

timeValue = "2007-09-25T15:40:51.0000000Z"; ,例如.

谢谢.

java datetime parsing exception simpledateformat

35
推荐指数
2
解决办法
6万
查看次数

Java:通过Parse.com REST API将日期对象作为JSONObject发送

我正在尝试通过Parse的REST API在我的Parse.com数据库中使用HttpsUrlConnection创建一个新对象.他们的REST API只接受JSON.我已经完成了所有工作,数据库将接受新的对象条目 - 除了我尝试包含Date字段时.当我传入日期时,服务器完全拒绝该对象.

我在他们的文档中找到了这个描述,用于在使用REST API时如何在对象中添加Date字段:

Parse移动客户端库还支持日期,二进制数据和关系数据.在REST API中,这些值被编码为JSON哈希值,并且__type字段设置为指示其类型,因此如果使用正确的编码,则可以读取或写入这些字段.

Date类型包含一个字段iso,其中包含以ISO 8601格式存储的UTC时间戳,精度为毫秒级:YYYY-MM-DDTHH:MM:SS.MMMZ.

{
  "__type": "Date",
  "iso": "2011-08-21T18:02:52.249Z"
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我想创建一个新对象并将其传递给数据库,我假设我需要创建另一个JSONObject并将其传递到相应的字段中.然而,当我尝试时,它仍然拒绝它.下面是我尝试将Date对象添加为要传递的参数,存储在自己的JSONObject中.我究竟做错了什么?基于文档在JSON中发送Date对象的正确方法是什么?

//datePicked is a Calendar object
Date sendTime = datePicked.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String sendTimeInUTC = formatter.format(sendTime);  

//Storing the Date object as a JSONObject, as specified
JSONObject dateAsObj = new JSONObject();
dateAsObj.put("__type", "Date");
dateAsObj.put("iso", sendTimeInUTC);

//jsonParam is the JSONObject that is being sent over to Parse's REST API
jsonParam.put("sendTime", dateAsObj);
Run Code Online (Sandbox Code Playgroud)

这是完整的函数,它产生http请求,用于上下文和引用:

private void runHttpRequest(final String emailAddress, final String password, …
Run Code Online (Sandbox Code Playgroud)

java json date parse-platform jsonobject

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

java.text.Parse异常:Unparseable Date

我有以下代码:

  String ModifiedDate = "1993-06-08T18:27:02.000Z" ;  
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
  Date ModDate = sdf.parse(ModifiedDate);
Run Code Online (Sandbox Code Playgroud)

即使我的日期格式很好,我也得到以下异常...

java.text.ParseException: Unparseable date: "1993-06-08T18:27:02.000Z"
at java.text.DateFormat.parse(DateFormat.java:337)
Run Code Online (Sandbox Code Playgroud)

java parsing date iso8601

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

Java:将TimeZone添加到DateTimeFormatter

LocalDateTime API允许通过使用格式化程序中的键“ z”来添加TimeZone名称。添加此密钥时出现异常,不明白为什么。我正在寻找类似此示例的内容11:59:22 PM GMT,而不是“ **... UMT+2**”。

我的代码:

public class TimeZone
{
    public static void main(String[] args)
    {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a z");
        System.out.println(now.format(formatter));
    }
}
Run Code Online (Sandbox Code Playgroud)

例外:

Exception in thread "main" java.time.DateTimeException: Unable to extract value: class java.time.LocalDateTime
at java.time.format.DateTimePrintContext.getValue(Unknown Source)
at java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.format(Unknown Source)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(Unknown Source)
at java.time.format.DateTimeFormatter.formatTo(Unknown Source)
at java.time.format.DateTimeFormatter.format(Unknown Source)
at java.time.LocalDateTime.format(Unknown Source)
at tz.TimeZone.main(TimeZone.java:12)
Run Code Online (Sandbox Code Playgroud)

这是DateTimeFormatter API部分:

All letters 'A' to 'Z' and 'a' to 'z' are reserved as …
Run Code Online (Sandbox Code Playgroud)

java datetime

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

杰克逊转换 LocalDatetime

我有一个带有 @JsonFormat 的 LocalDateTime 字段

@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'")
private LocalDateTime dateTime;
Run Code Online (Sandbox Code Playgroud)

当 Jackson 尝试解析像2018-11-28T15:24:00.000Z这样的日期时,会抛出异常

com.fasterxml.jackson.databind.JsonMappingException:无法构造 java.time.LocalDateTime 的实例:没有字符串参数构造函数/工厂方法来从字符串值反序列化('2018-11-28T15:24:00.000Z')

在我的 pom.xml 中我有:

  • 春季启动1.5.7
  • 杰克逊数据类型-jdk8
  • 杰克逊数据类型-jsr310

我的 ObjectMapper Bean:

@Bean
public ObjectMapper postConstruct() {
    return this.builder
           .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .defaultUseWrapper(false)
            .build();
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", timezone ="UTC")
private LocalDateTime dateTime;
Run Code Online (Sandbox Code Playgroud)

java jackson spring-boot

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

如何在Java中获取格式为2022-10-03T19:45:47.844Z的日期和时间

我需要 java 类中 2022-10-03T19:45:47.844Z 格式的当前系统日期和时间。

我尝试使用 zoneddatetime 和简单日期格式,但无法从在线获取写入语法或代码。我是 Java 初学者,非常感谢任何帮助。谢谢。

java iso8601 datetime-format simpledateformat offsetdatetime

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