vbs中如何取到毫秒级的时间

vbs中如何取到毫秒级的时间,第1张

方法一,调用javascript获取毫秒时间

Set sc = CreateObject("ScriptControl")

scLanguage = "javascript"

t = sceval("new Date()getTime()")

MsgBox DateAdd("s", Fix(t / 1000), "1970-1-1 8:00") & "" & Right(t, 3)

方法二,用WMI方法,缺点是速度慢,获取一次时间大约需要15毫秒。

Set wmi = GetObject("winmgmts:\\\root\cimv2")

For Each e In wmiExecQuery("select LocalDateTime from Win32_OperatingSystem")

  t = eLocalDateTime

  MsgBox Left(t, 4) & "-" & Mid(t, 5, 2) & "-" & Mid(t, 7, 2) & " " _

      & Mid(t, 9, 2) & ":" & Mid(t, 11, 2) & ":" & Mid(t, 13, 2) _

      & Mid(t, 15, 4)

Next

如果只计算时间间隔,用两次Timer函数,精确到八分之一毫秒。

t0=Timer

MsgBox "暂停"

MsgBox "暂停了" & Timer-t0 & "毫秒"

本篇博客中我们将采用类似的方法,并熟悉Scala编程语言的另一个重要特性— 模式匹配 。同样我们将通过编写一些简短的代码片段,一系列小步骤来逐步深入。

case 类的许多其他有用特性(例如结构化 equals、hashCode、copy 和 toString)中,Scala 编译器支持以下代码

请注意这里的一个很好的对称性:构造时me 在左侧,带有两个字符串参数的 FullName() 在赋值的右侧,解构时正好相反。

当谈到 Scala 模式匹配时,首先想到的是 match 语句(它类似于许多其他编程语言中的 switch / case,但是更强大)。可以在 Scala 中的很多地方可以使用模式匹配:你可以在定义 lambda 函数时使用它,也可以在 for-comprehension 生成器的左侧,甚至在上面例子中的赋值语句中。为简单起见,在本文的其余部分,我们将主要在赋值语句中使用模式匹配。

现在我们已经定义了case类以及一些使用它的代码,接着尝试了解 Scala case类的特别之处以及如何使用相关代码。有时理解某事物如何工作的一个非常好的方法是破坏它,然后尝试使其再次工作!先将 FullName 类定义的 case 关键字排除

如果尝试上述代码,会发现代码(value me 的构建和它的解构)编译报错。为了修复它,我们需要在事情开始崩溃之前手动实现 Scala 编译器之前提供给我们的功能,我们为 FullName 类添加一个伴随对象

Scala 中的伴生对象是一个单例,与它的伴生类同名且在同一个文件中。而且伴随对象和它的类可以访问彼此的私有成员。伴生对象是放置类的静态成员的地方(与 Java 不同,Scala 没有 static 修饰符),这提供了更清晰的静态/实例成员分离。

注意:我们必须稍微更改 FullName 类定义,以使 FullNameunapply 编译成功

如果不进行修改,first 和 last 只会作为构造函数的参数,无法通过 unapply 访问它们。在 first 和 last 之前添加 val 会将它们同时转换为构造函数参数和实例字段(默认为 public)。在我们删除 case 关键字之前Scala 编译器会自动为我们生成此功能以及伴随对象。

现在手动添加所有这些代码可以修复编译问题,继续让我们深入了解刚刚实现的两个方法的细节

apply 是 Scala 中的一个特殊方法名称,按照约定可以在代码中省略,所以 FullName() 等价于 FullNameapply() ,我们正在使用它来构造 FullName 的新实例,而无需 new 关键字。

unapply 正好相反——它解构了一个 FullName 的实例,并且是模式匹配的基础,接下来我们将重点介绍这种方法,在这种情况下,它将 FullName 解构为两个字符串值,并将它们包装在 Some 中,这意味着它可以匹配 FullName 的任何实例(稍后我们将探讨部分匹配partial matching)。

再次注意这两个方法的对称性: apply 将两个字符串作为参数,并返回一个 FullName 的实例。而 unapply 则恰好相反。

现在我们对什么是 unapply 以及它如何用于解构/模式匹配有了一个非常基本的了解。在大多数情况下,它已经由 Scala 处理—— unapply 的实现不仅为我们编写的所有case类提供,而且为几乎所有 Scala 标准库中的所有内容提供,包括集合(如果适用),事实上实现自己的 unapply 并不常见,除非你是某个有趣库的开发者,然而我们可以作弊—在Java中unapply 肯定不存在,让我们从 javatime 中获取一些类,并在它们上添加对 Scala 模式匹配的支持

能够将 Date 分解为年、月和日,将 Time 分解为小时、分钟和秒,这很自然。此外DateTime — 转换为日期和时间,根据我们已有的知识,这非常简单。但是我们不能使用名称 LocalDate、LocalDateTime 和 LocalTime 来创建合适的伴生对象,因为伴生对象需要与对应的类放在相同的文件,但由于这些类来自 Java 标准库,因此不可能。为了避免名称冲突,我们简单地将实现对象的名称中省略 Local

接着使用它们:

LocalDate 和 LocalTime 都按照预期被解构为 3 个 Int 值。如果我们只需要一些解构的值而不需要其他值,可以使用下划线代替那些不需要的值

一个更有趣的例子是 LocalDateTime 的嵌套解构

这为我们提供了 6 个 Int 值(日期部分为 3,时间部分为 3)。

模式匹配的另一个非常有用的特性是整个值的赋值,这可以在解构之外完成。对于我们的 DateTime 示例,它可能如下所示

除了 6 个 Int 值,还得到一个 LocalDate 值,一个是 LocalTime 值,最后是 LocalDateTime 的整个值(以 dt 为单位)。

在上面的所有示例中,我们都解构为固定数量的值——(年、月、日)、或(时、分、秒)或(日期、时间)。在某些情况下我们需要处理一系列值,而不是某些固定数量的值,可以尝试通过将 LocalDateTime 解构为一系列 Int

unapplySeq 是 unapply 的变体,它解构为一系列值而不是固定大小的元组。在这个例子中,序列的长度总是 6,但可以省略它的尾部,因为不需要它

_ 是 Scala varargs 的语法

到现在为止, unapply / unapplySeq 总是返回 Some。为此 unapply 将返回 Some 以防该值符合某些条件,而 None 则不符合。我们已经在处理 LocalTime 的值,将它们匹配到 AM 或 PM 时间将是一个自然的例子

其中 case _ => 是默认情况,如果没有其他匹配项,则会使用此进行匹配,此外我们刚刚介绍了另外两个用于部分匹配的功能

•守卫(guards),例如case Time(h, m, s) if h < 12•常量匹配,例如case Time(12, m, s)

现在已经看到 Scala 模式匹配的强大功能!

我们自己实现一个可以很好地格式化当前时间的时钟,通过使用模式匹配和 AM / PM 提取器(加上一些看起来像表情符号流的老派 Java 字符串格式)

我们已经 探索 了 Scala 模式匹配的大部分特性。可以在这里 [1] 找到这篇博文的所有源代码,为了更好地理解可以在 IntelliJ IDEA中运行这些代码,最后如果 Scala 代码中有一些复杂的、嵌套的 ifs 和 elses,请尝试使用模式匹配来更好地重构它。

[1] 这里: >

MySQL JDBC 8025版本中的时区处理与之前的版本有所差异。具体来说,这些差异主要涉及以下方面:

1 时区转换:MySQL JDBC 8025版本默认使用UTC时区进行时间戳的转换。如果需要在应用程序中使用本地时区或其他时区,需要通过设置连接参数或使用JDBC API进行相应的设置。

2 日期时间类型的处理:MySQL JDBC 8025版本中,日期时间类型的值会被转换为Java8中的日期时间类型(例如javatimeLocalDateTime、javatimeZonedDateTime等)。这些类型与之前版本中的javasqlDate和javasqlTimestamp有所不同,需要注意使用方式和转换规则。

3 时区信息的获取:MySQL JDBC 8025版本中,可以通过使用JDBC API获取MySQL服务器的时区信息,以便在应用程序中进行时区转换和处理。

需要注意的是,这些差异可能会对已有的应用程序产生影响,需要对应用程序进行相应的修改和适配。同时,在使用MySQL JDBC 8025版本时,需要仔细阅读官方文档,了解其提供的新特性和变化,以便更好地使用和管理MySQL数据库。

在旧版本的jdk中,Java的日期/时间类的定义并不一致,在javautil和javasql的包中都有日期类,此外用于格式化和解析的类在javatextSimpleDateFormat包中定义。

javautilDate是在除了SQL语句的情况下面使用的。

javasqlDate是针对SQL语句使用的,它只包含日期而没有时间部分

它们都有getTime方法返回毫秒数,自然就可以直接构建。 javautilDate 是 javasqlDate 的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是javasqlDate。

javasqlDate转为javautilDate

javasqlDate date=new javasqlDate();

javautilDate d=new javautilDate (dategetTime());

javautilDate转为javasqlDate

javautilDate utilDate=new Date();

javasqlDate sqlDate=new javasqlDate(utilDategetTime());

javautilDate utilDate=new Date();

javasqlDate sqlDate=new javasqlDate(utilDategetTime());

javasqlTime sTime=new javasqlTime(utilDategetTime());

javasqlTimestamp stp=new javasqlTimestamp(utilDategetTime());

这里所有时间日期都可以被SimpleDateFormat格式化format()

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

fformat(stp);

fformat(sTime);

fformat(sqlDate);

fformat(utilDate)

javasqlDate sqlDate=javasqlDatevalueOf(" 2005-12-12");

utilDate=new javautilDate(sqlDategetTime());

另类取得年月日的方法:

import javatextSimpleDateFormat;

import javautil;

javautilDate date = new javautilDate();

//如果希望得到YYYYMMDD的格式SimpleDateFormat

sy1=new SimpleDateFormat("yyyyMMDD");

String dateFormat=sy1format(date);

//如果希望分开得到年,月,日SimpleDateFormat

sy=new SimpleDateFormat("yyyy");

SimpleDateFormat sm=new SimpleDateFormat("MM");

SimpleDateFormat sd=new SimpleDateFormat("dd");

String syear=syformat(date);

String smon=smformat(date);

String sday=sdformat(date);

注意啦!!!在JAVA 8中有了日期的新的表示方式。在javatime包中。

   Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容。

为什么我们需要新的Java日期/时间API?

    在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。在Java中,现有的与日期和时间相关的类存在诸多问题,其中有:

1 Java的日期/时间类的定义并不一致,在javautil和javasql的包中都有日期类,此外用于格式化和解析的类在javatext包中定义。

2 javautilDate同时包含日期和时间,而javasqlDate仅包含日期,将其纳入javasql包并不合理。另外这两个类都有相同的名字,这本身就是一个非常糟糕的设计。

3 对于时间、时间戳、格式化以及解析,并没有一些明确定义的类。对于格式化和解析的需求,我们有javatextDateFormat抽象类,但通常情况下,SimpleDateFormat类被用于此类需求。

4 所有的日期类都是可变的,因此他们都不是线程安全的,这是Java日期类最大的问题之一。

5 日期类并不提供国际化,没有时区支持,因此Java引入了javautilCalendar javautilTimeZone类,但他们同样存在上述所有的问题。

     在现有的日期和日历类中定义的方法还存在一些其他的问题,但以上问题已经很清晰地表明:Java需要一个健壮的日期/时间类。这也是为什么Joda Time在Java日期/时间需求中扮演了高质量替换的重要角色。

Java 8日期/时间API是JSR-310的实现,它的实现目标是克服旧的日期时间实现中所有的缺陷,新的日期/时间API的一些设计原则是:

1 不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。

2 关注点分离:新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(unix timestamp)以及时区定义了不同的类。

3 清晰:在所有的类中,方法都被明确定义用以完成相同的行为。举个例子,要拿到当前实例我们可以使用now()方法,在所有的类中都定义了format()和parse()方法,而不是像以前那样专门有一个独立的类。为了更好的处理问题,所有的类都使用了工厂模式和策略模式,一旦你使用了其中某个类的方法,与其他类协同工作并不困难。

4 实用 *** 作:所有新的日期/时间API类都实现了一系列方法用以完成通用的任务,如:加、减、格式化、解析、从日期/时间中提取单独部分,等等。

5 可扩展性:新的日期/时间API是工作在ISO-8601日历系统上的,但我们也可以将其应用在非IOS的日历上。

Java日期/时间API包含以下相应的包。

1 javatime包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。

2 javatimechrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。

3 javatimeformat包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为javatime包中相应的类已经提供了格式化和解析的方法。

4 javatimetemporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。

5 javatimezone包:这个包包含支持不同时区以及相关规则的类。

新旧API的对比图:

新API的示例代码:

public class TimeIntroduction {

    public static void testClock() throws InterruptedException {

        //时钟提供给我们用于访问某个特定 时区的 瞬时时间、日期 和 时间的。  

        Clock c1 = ClocksystemUTC(); //系统默认UTC时钟(当前瞬时时间 SystemcurrentTimeMillis())  

        Systemoutprintln(c1millis()); //每次调用将返回当前瞬时时间(UTC)  

        Clock c2 = ClocksystemDefaultZone(); //系统默认时区时钟(当前瞬时时间)  

        Clock c31 = Clocksystem(ZoneIdof("Europe/Paris")); //巴黎时区  

        Systemoutprintln(c31millis()); //每次调用将返回当前瞬时时间(UTC)  

        Clock c32 = Clocksystem(ZoneIdof("Asia/Shanghai"));//上海时区  

        Systemoutprintln(c32millis());//每次调用将返回当前瞬时时间(UTC)  

        Clock c4 = Clockfixed(Instantnow(), ZoneIdof("Asia/Shanghai"));//固定上海时区时钟  

        Systemoutprintln(c4millis());

        Threadsleep(1000);

        Systemoutprintln(c4millis()); //不变 即时钟时钟在那一个点不动  

        Clock c5 = Clockoffset(c1, DurationofSeconds(2)); //相对于系统默认时钟两秒的时钟  

        Systemoutprintln(c1millis());

        Systemoutprintln(c5millis());

    }

    public static void testInstant() {

        //瞬时时间 相当于以前的SystemcurrentTimeMillis()  

        Instant instant1 = Instantnow();

        Systemoutprintln(instant1getEpochSecond());//精确到秒 得到相对于1970-01-01 00:00:00 UTC的一个时间  

        Systemoutprintln(instant1toEpochMilli()); //精确到毫秒  

        Clock clock1 = ClocksystemUTC(); //获取系统UTC默认时钟  

        Instant instant2 = Instantnow(clock1);//得到时钟的瞬时时间  

        Systemoutprintln(instant2toEpochMilli());

        Clock clock2 = Clockfixed(instant1, ZoneIdsystemDefault()); //固定瞬时时间时钟  

        Instant instant3 = Instantnow(clock2);//得到时钟的瞬时时间  

        Systemoutprintln(instant3toEpochMilli());//equals instant1  

    }

    public static void testLocalDateTime() {

        //使用默认时区时钟瞬时时间创建 ClocksystemDefaultZone() -->即相对于 ZoneIdsystemDefault()默认时区  

        LocalDateTime now = LocalDateTimenow();

        Systemoutprintln(now);

//自定义时区  

        LocalDateTime now2 = LocalDateTimenow(ZoneIdof("Europe/Paris"));

        Systemoutprintln(now2);//会以相应的时区显示日期  

//自定义时钟  

        Clock clock = Clocksystem(ZoneIdof("Asia/Dhaka"));

        LocalDateTime now3 = LocalDateTimenow(clock);

        Systemoutprintln(now3);//会以相应的时区显示日期  

//不需要写什么相对时间 如javautilDate 年是相对于1900 月是从0开始  

//2013-12-31 23:59  

        LocalDateTime d1 = LocalDateTimeof(2013, 12, 31, 23, 59);

//年月日 时分秒 纳秒  

        LocalDateTime d2 = LocalDateTimeof(2013, 12, 31, 23, 59, 59, 11);

//使用瞬时时间 + 时区  

        Instant instant = Instantnow();

        LocalDateTime d3 = LocalDateTimeofInstant(Instantnow(), ZoneIdsystemDefault());

        Systemoutprintln(d3);

//解析String--->LocalDateTime  

        LocalDateTime d4 = LocalDateTimeparse("2013-12-31T23:59");

        Systemoutprintln(d4);

        LocalDateTime d5 = LocalDateTimeparse("2013-12-31T23:59:59999");//999毫秒 等价于999000000纳秒  

        Systemoutprintln(d5);

//使用DateTimeFormatter API 解析 和 格式化  

        DateTimeFormatter formatter = DateTimeFormatterofPattern("yyyy/MM/dd HH:mm:ss");

        LocalDateTime d6 = LocalDateTimeparse("2013/12/31 23:59:59", formatter);

        Systemoutprintln(formatterformat(d6));

//时间获取  

        Systemoutprintln(d6getYear());

        Systemoutprintln(d6getMonth());

        Systemoutprintln(d6getDayOfYear());

        Systemoutprintln(d6getDayOfMonth());

        Systemoutprintln(d6getDayOfWeek());

        Systemoutprintln(d6getHour());

        Systemoutprintln(d6getMinute());

        Systemoutprintln(d6getSecond());

        Systemoutprintln(d6getNano());

//时间增减  

        LocalDateTime d7 = d6minusDays(1);

        LocalDateTime d8 = d7plus(1, IsoFieldsQUARTER_YEARS);

//LocalDate 即年月日 无时分秒  

//LocalTime即时分秒 无年月日  

//API和LocalDateTime类似就不演示了  

    }

    public static void testZonedDateTime() {

        //即带有时区的date-time 存储纳秒、时区和时差(避免与本地date-time歧义)。  

//API和LocalDateTime类似,只是多了时差(如2013-12-20T10:35:50711+08:00[Asia/Shanghai])  

        ZonedDateTime now = ZonedDateTimenow();

        Systemoutprintln(now);

        ZonedDateTime now2 = ZonedDateTimenow(ZoneIdof("Europe/Paris"));

        Systemoutprintln(now2);

//其他的用法也是类似的 就不介绍了  

        ZonedDateTime z1 = ZonedDateTimeparse("2013-12-31T23:59:59Z[Europe/Paris]");

        Systemoutprintln(z1);

    }

    public static void testDuration() {

        //表示两个瞬时时间的时间段  

        Duration d1 = Durationbetween(InstantofEpochMilli(SystemcurrentTimeMillis() - 12323123), Instantnow());

//得到相应的时差  

        Systemoutprintln(d1toDays());

        Systemoutprintln(d1toHours());

        Systemoutprintln(d1toMinutes());

        Systemoutprintln(d1toMillis());

        Systemoutprintln(d1toNanos());

//1天时差 类似的还有如ofHours()  

        Duration d2 = DurationofDays(1);

        Systemoutprintln(d2toDays());

    }

    public static void testChronology() {

        //提供对javautilCalendar的替换,提供对年历系统的支持  

        Chronology c = HijrahChronologyINSTANCE;

        ChronoLocalDateTime d = clocalDateTime(LocalDateTimenow());

        Systemoutprintln(d);

    }

    /

      新旧日期转换

     /

    public static void testNewOldDateConversion(){

        Instant instant=new Date()toInstant();

        Date date=Datefrom(instant);

        Systemoutprintln(instant);

        Systemoutprintln(date);

    }

    public static void main(String[] args) throws InterruptedException {

        testClock();

        testInstant();

        testLocalDateTime();

        testZonedDateTime();

        testDuration();

        testChronology();

        testNewOldDateConversion();

    }

}

要修改软件开发环境日志日期,需要先确定使用的日志框架和日志格式。通常,在日志中记录日期和时间的方式包括以下两种:

1 直接在日志消息中记录日期和时间。例如,[2022-06-22 23:59:59] INFO: This is an information message

2 使用日志框架提供的日期格式化器将日期和时间格式化为特定的格式,并将其添加到日志消息中。例如,使用log4j框架的日期格式化器,可以将日期格式化为"yyyy-MM-dd HH:mm:ss",然后将其添加到日志消息中。

无论哪种方式,在将日期添加到日志中之前,都需要先获取当前日期。可以使用Java的日期类(如javautilDate或javatimeLocalDateTime)获取当前日期。然后,根据所选择的日志格式,将日期格式化为特定的格式,并将其添加到日志消息中。

如果要修改已有日志文件的日期,可以使用一个文本编辑器(如Notepad++)查找并替换所有出现的日期。但这种方法只适用于少量的日志文件。如果有大量的日志文件需要修改日期,可以编写一个脚本来自动化该过程。

@echo off

for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value')do set =%%a

set/a a=%:~,4%,b=1%:~4,2%%%100,c=1%:~6,2%%%100,d=1%:~8,2%%%100,e=1%:~10,2%%%100

echo,%a%年%b%月%c%日%d%时%e%分

pause

JWT里有一个关键的东东,就是续期TOKEN,即TOKEN快过期时,刷新一个新的TOKEN给客户端

办法如下:

1后端生成TOKEN

importcomstarmarkcoreshiromodelSecurityUser;importcomstarmarkcoreshiromodelUserLoginToken;importcomstarmarkcoreshiroutilJWTUtil;importorgapachecommonslang3BooleanUtils;importorgapachecommonslang3StringUtils;importorgapacheshiroauthcAuthenticationException;importorgapacheshiroauthcAuthenticationToken;importorgapacheshirosubjectSubject;importorgapacheshirowebfilterauthcAuthenticatingFilter;importorgapacheshirowebutilWebUtils;importorgslf4jLogger;importorgslf4jLoggerFactory;importorgspringframeworkwebbindannotationRequestMethod;importjavaxservletServletRequest;importjavaxservletServletResponse;importjavaxservlet>

以上就是关于vbs中如何取到毫秒级的时间全部的内容,包括:vbs中如何取到毫秒级的时间、详解 Scala 模式匹配、mysqljdbc8.0.25时区处理差异等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9453464.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存