好的,所以我正在做一个简单的 UTC 日期格式化脚本,它采用 UTC 并将其转换为日期和时间的特定格式。我可以让脚本在javascript中正常工作,但是我使用的插件显然需要Groovy。我不熟悉它,有人告诉我编程本质上是相同的,因为它可以使用javascript库/语言。无论如何,这是我的代码片段:
import java.util.*;
var d = new Date();
var CurrentDay = ('0' + d.getUTCDate()).slice(-2);
var CurrentMonth = ('0' + d.getUTCMonth()).slice(-2);
var CurrentYear = d.getUTCFullYear();
var CurrentHours = ('0' + d.getUTCHours()).slice(-2);
var CurrentMinutes = ('0' + d.getUTCMinutes()).slice(-2);
var CurrentSeconds = ('0' + d.getUTCSeconds()).slice(-2);
var DateFormatted = CurrentYear.toString() + CurrentMonth.toString() + CurrentDay.toString() + CurrentHours.toString() + CurrentMinutes.toString() + CurrentSeconds.toString();
return DateFormatted;
当我尝试运行脚本时,我收到此错误消息:
groovy.lang.MissingMethodException: No signature of method: Script1.var() is applicable for argument types: (java.util.Date) values: [Thu Jun 06 21:18:43 CDT 2013]
Possible solutions: wait(), run(), run(), every(), any(), wait(long)
Parameters:
{}
任何帮助将不胜感激。此外,我可以让这个脚本完全按照我想要的普通 javascript 运行。
通常,您永远不应该仅仅为了本地利益而更改默认时区,因为这会影响 JVM 中的所有代码 - 例如,它可能希望实际的本地时区是默认时区。因此,使用 TimeZone.setDefault() 是一种不好的做法,除非您确定所有代码都需要该时区,并且所有代码都是您的,并且这永远不会改变。这有很多问题要问。
相反,您应该在呼叫中明确指定感兴趣的时区。
>
如果要使用特定于用户/计算机区域设置的日期/时间格式,则应使用 DateFormat 工厂,特别是以下静态方法之一 - 它们将处理使用任何其他方法(包括 SimpleDateFormatter)无法实现的复杂区域设置/语言细节:
getDateTimeInstance() - 用于默认区域设置和默认样式。
获得该 DateFormatter 实例后,您将需要在其上调用 setTimeZone(TimeZone.getTimeZone('UTC'))。这将使该格式化程序使用该时区。您也可以使用任何其他时区。
最后,您将调用 dateFormat.format(Date date) 方法,以所选区域设置、样式和时区获取该日期的字符串表示形式。
如果您不想要特定于区域设置的格式,但希望修复到您自己的格式(例如 ISO),而不是使用上述静态工厂方法创建 DateFormat 实例,则需要改用 SimpleDateFormat。具体来说,您将使用新的 SimpleDateFormat(字符串模式)构造函数。该模式将遵循SimpleDateFormat JavaDoc中的定义,并且可以是'yyyy-MM-dd HH:mm:ss。例如,SSS'。
然后,您将在该 SimpleDateFormat 实例上调用 setTimeZone() 方法,该方法与(任何)DateFormat 相同。在Groovy中,你可以跳过显式的SimpleDateFormat创建,你可以改用Groovy Date增强功能,它的格式(字符串格式,时区tz)方法 - 它将在幕后做SimpleDateFormat的东西。
特定于语言环境的格式方法示例(Java 和/或 Groovy):
String gimmeUTC(Date date, Locale locale) {
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, locale);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return dateFormat.format(date);
}
固定格式方法示例(Java 和/或 Groovy):
String gimmeUTC(Date date, Locale locale) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return dateFormat.format(date);
}
固定格式示例(仅限 Groovy):
String gimmeUTC(Date date) {
return date.format('yyyy-MM-dd HH:mm:ss.SSS', TimeZone.getTimeZone('UTC'));
}
这里的Java语法,但你也可以在Groovy中调用java.time类。
Instant.now()
.toString()
2017-01-23T01:23:45.987654321Z
问题和其他答案使用麻烦的旧日期时间类,这些类现在是遗留的,被java.time类所取代。
显然,您想生成一个标准 ISO 8601 格式的字符串,表示 UTC 时区的日期时间值。
java.time.Instant
类以 UTC 表示时间轴上的一个时刻,分辨率为纳秒。
Instant instant = Instant.now() ;
java.time 类在解析/生成字符串时默认使用 ISO 8691 格式。
String output = instant.toString() ;
2017-01-23T01:23:45.987654321Z
如果你想要整整秒,没有分数,截断。
Instant instant = Instant.now().truncatedTo( ChronoUnit.SECONDS ) ;
JavaScript 中的 var
等价物是 Groovy 中的 “def”。此外,在Groovy中使用Groovy Date设置日期格式更容易:
TimeZone.setDefault(TimeZone.getTimeZone('UTC'))
def now = new Date()
println now
println now.format("MM/dd/yyyy'T'HH:mm:ss.SSS'Z'")
//Prints:
Fri Jun 07 02:57:58 UTC 2013
06/07/2013T02:57:58.737Z
您可以根据需要修改格式。有关可用格式,请参阅简单日期格式。
问题内容: 我有这样的字符串。我需要像这样将字符串更改为UTC日期格式。我已经尝试了一些代码,但是没有返回UTC日期时间。 我的代码是 我得到的输出是格式。但不是UTC时间格式。如何解决这个问题? 问题答案: 尝试使用或时区标志设置日期格式:
我想把这个2021年1月20日20:10:14转换成yyyy-MM-dd'T'HH:MM:ss格式。Android系统中的SSS'Z'。目前我正在使用函数,但当我转换为本地格式时,我没有得到原始时间
在config/app.php中,我将时区设置如下: 这是否意味着在我的应用程序中的任何地方,如果我调用这些carbon方法,它们都将是UTC,或者我仍然需要添加时区,例如carbon::now(“UTC”)?
在下面的示例中,我们正在尝试将“日期”从一种格式转换为其他格式,例如要转换为UTC格式,例如2021-07-26T18:37:15.490Z 有人能帮忙吗。 输入XML: 现有输出: XSLT代码: 参考URL:https://xsltfiddle.liberty-development.net/pNEj9dB/1
我有一个方法可以生成一个随机的日期和时间。 打印输出类似于 我见过几个这样的问题和页面,但他们没有给我一个线索。
问题内容: 我从服务器获取UTC时区的字符串日期,我需要将其转换为本地时区。 我的密码: 此打印- utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 11:42:00 +0000) 如果我删除 它打印 utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 08:42:00 +0000) 我的当地时区是UTC +3,在第
问题内容: 从服务器上,我得到了这种格式的datetime变量:它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时间。 如何使用JavaScript或jQuery完成此操作? 问题答案: 在将字符串转换为javascript中的日期之前,将’UTC’附加到字符串中: