以String格式创建当前日期,并在Apex中将其解析为字符串

问题描述 投票:1回答:4

目标:

  1. 我需要先创建一个表示当前日期的String。
  2. 之后,需要解析此String并用于构建Date类的实例。

初步尝试:

在我的测试类中,我以下列方式为我测试的方法创建一个当前日期作为String输入:

String inputDate = date.today().format(); // 13:28:15:378 USER_DEBUG [24]|DEBUG|17.3.2017

但是,当我尝试创建一个Date对象的实例时,如下所示:

Date dateFromInput = date.valueOf(inputDate);

我收到以下错误:

13:28:15:398 FATAL_ERROR System.TypeException: Invalid date: 17.3.2017
salesforce apex
4个回答
2
投票

Date.format()将以登录用户的当前本地日期格式返回字符串。

Date.valueOf需要在本地时区以yyyy-MM-dd HH:mm:ss格式输入字符串。

下面应该工作:

String inputDate = date.today().format('**yyyy-MM-dd HH:mm:ss**');
Date dateFromInput = date.parse(inputDate);

2
投票

以下代码

((DateTime)Dob).format('YYYY-MM-dd')

只是工作


0
投票

In the documentation, there is a difference between the parse and valueOf Date methods that escaped me:

parse(stringDate)从String构造一个Date。 String的格式取决于本地日期格式。

valueOf(stringDate)返回包含指定String值的Date。

我想要的是解析:

String inputDate = date.today().format(); /
Date dateFromInput = date.parse(inputDate);

0
投票

你可以尝试Moment.apex。这是link

Datetime dt = new Moment('2018/01/12 10:00:00', 'yyyy/MM/dd HH:mm:ss').toDatetime();
© www.soinside.com 2019 - 2024. All rights reserved.