如何在Java中将ZoneId转换为DateTimeZone

时间:2016-04-26 19:23:23

标签: datetime java-8 jodatime

如何将ZoneId转换为DateTimeZone? 我有:

 Private Instant logTime;  //java.time
    Private ZoneId timeZoneId;   //java.time

但我需要从上面获取DateTime和DateTimeZone(两个org.joda.time)。我从Instant中得到了DateTime =

Private DateTime  dateTime ;   //org.joda.time
private DateTimeZone dateTimeZone;   //org.joda.time

LocalDateTime currentTime = new LocalDateTime(logTime);
dateTime = currentTime.toDateTime();

对于dateTimeZone,我做了:

dateTimeZone = DateTimeZone.forID(timeZoneId.getId()); // getting java.lang.NullPointerException

但是得到错误。有人能告诉我如何正确地做到这一点

这给了我错误。有人可以告诉我该如何转换它。我需要获取给定zoneId的当前时间。

1 个答案:

答案 0 :(得分:1)

我遇到了同一时区转换问题,我可以通过调用final java.time.ZoneId timeZoneId; final org.joda.time.DateTimeZone timeZone = org.joda.time.DateTimeZone.forTimeZone(java.util.TimeZone.getTimeZone(timeZoneId)) 来完成此帖Converting from java.util.TimeZone to org.joda.DateTimeZone上的@ basil-bourque答案,从而实现转化。

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Navigation;
using System;


namespace PDFConvert
{
    class Program
    {
        static void Main(string[] args)
        {
            String InputPdf = @"test.pdf";
            String OutputPdf = "out.pdf";

            PdfDocument pdfDoc = new PdfDocument(new PdfReader(InputPdf), new PdfWriter(OutputPdf));

            PdfOutline outlines = pdfDoc.GetOutlines(false);     
            // first level     
            foreach (var outline in outlines.GetAllChildren())
            {
                // second level
                foreach (var second in outline.GetAllChildren())
                {
                    String title = second.GetTitle();
                    PdfDestination dest = second.GetDestination();

                    pdfDoc.AddNamedDestination(title, dest.GetPdfObject());
                }
            }
            pdfDoc.Close();
        }
    }
}