DateTime.UtcNow.ToString() 和DateTime.Now.ToString()输出的字符为啥不一样呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DateTime.UtcNow.ToString() 和DateTime.Now.ToString()输出的字符为啥不一样呢?相关的知识,希望对你有一定的参考价值。

DateTime.UtcNow.ToString() 和DateTime.Now.ToString()输出的字符为什么不一样呢?

DateTime.UtcNow.ToString()输出的是0时区的事件,DateTime.Now.ToString()输出的是当前时区的时间,我们中国使用的是东八区的时间,所以差8个小时。 参考技术A utcnow获取的是计算机上的当前日期和时间,表示为协调世界时 (UTC)。
从 .NET Framework 2.0 版开始,返回值是 DateTime,它的 Kind 属性返回 DateTimeKind..::.Utc。
这里有一段示例代码 希望可以帮到你

// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(),
// and ToUniversalTime() methods.

using System;

class Sample

public static void Main()

// Get the date and time for the current moment, adjusted
// to the local time zone.

DateTime saveNow = DateTime.Now;

// Get the date and time for the current moment expressed
// as coordinated universal time (UTC).

DateTime saveUtcNow = DateTime.UtcNow;
DateTime myDt;

// Display the value and Kind property of the current moment
// expressed as UTC and local time.

DisplayNow("UtcNow: ..........", saveUtcNow);
DisplayNow("Now: .............", saveNow);
Console.WriteLine();

// Change the Kind property of the current moment to
// DateTimeKind.Utc and display the result.

myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc);
Display("Utc: .............", myDt);

// Change the Kind property of the current moment to
// DateTimeKind.Local and display the result.

myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local);
Display("Local: ...........", myDt);

// Change the Kind property of the current moment to
// DateTimeKind.Unspecified and display the result.

myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
Display("Unspecified: .....", myDt);


// Display the value and Kind property of a DateTime structure, the
// DateTime structure converted to local time, and the DateTime
// structure converted to universal time.

public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
public static void Display(string title, DateTime inputDt)

DateTime dispDt = inputDt;
string dtString;

// Display the original DateTime.

dtString = dispDt.ToString(datePatt);
Console.WriteLine("0 1, Kind = 2",
title, dtString, dispDt.Kind);

// Convert inputDt to local time and display the result.
// If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
// If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
// If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
// performed as if inputDt was universal time.

dispDt = inputDt.ToLocalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToLocalTime: 0, Kind = 1",
dtString, dispDt.Kind);

// Convert inputDt to universal time and display the result.
// If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
// If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
// If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
// performed as if inputDt was local time.

dispDt = inputDt.ToUniversalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToUniversalTime: 0, Kind = 1",
dtString, dispDt.Kind);
Console.WriteLine();


// Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

public static void DisplayNow(string title, DateTime inputDt)

string dtString = inputDt.ToString(datePatt);
Console.WriteLine("0 1, Kind = 2",
title, dtString, inputDt.Kind);



/*
This code example produces the following results:
UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
Now: ............. 5/6/2005 02:34:42 PM, Kind = Local
Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc
Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
ToLocalTime: 5/6/2005 02:34:42 PM, Kind = Local
ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

C#:将 Datetime.Now 解析为特定的 fromat [重复]

【中文标题】C#:将 Datetime.Now 解析为特定的 fromat [重复]【英文标题】:C#: Parse Datetime.Now to specific fromat [duplicate] 【发布时间】:2017-01-09 16:08:02 【问题描述】:

我想将Datetime.Now 解析成格式化字符串,如

“2016-09-01T02:00:12.7011585Z”

【问题讨论】:

DateTime.UtcNow.ToString("o") 可能是您想要的。这么少的细节很难说 【参考方案1】:

不能解析DateTime.Now。它已经返回DateTime,而不是string

您可以使用yyyy-MM-dd'T'HH:mm:ss.fffffff'Z' 格式和InvariantCulture 等适当的文化生成它的字符串字符串表示形式;

DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'", CultureInfo.InvariantCulture)

【讨论】:

以上是关于DateTime.UtcNow.ToString() 和DateTime.Now.ToString()输出的字符为啥不一样呢?的主要内容,如果未能解决你的问题,请参考以下文章

新的 Uri 解码相对路径

从 APIM 策略获取 Azure 表存储实体

如何从响应中读取文件名 - reactJs